Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (29.12.2011 в 22:31)
Хм... вот судя по формуле, 6 - это все-таки строка, а 8 - столбец, либо приходится в формуле менять местами все индексы. Вот что у меня получилось. Кроме того не понятно, это дистанция должна получаться одна на строку?
#include<iostream>
using namespace std;

// Функция распечатывает матрицу
// matrix - адрес двумерного массива
// row - количество рядов
// col -количество столбцов
void print_matrix(double *matrix, int const row, int const col)
{
  // Вспомогательные переменные
  int i, j;
  for(i = 0; i < row; i++)
  {
    for(j = 0; j < col; j++)
    {
      cout << *(matrix + i * (row - 1) + j) << " ";
    }
    cout << endl;
  }
}
// Главная функция
void main()
{
  // Вспомогательные переменные
  int i, j;
  const int ROW = 4;
  const int COL = 3;
  // Объявляем матрицу 6x8
  double matrix[ROW][COL];
  // Результирующий вектор
  double vector[ROW];
  // Инициализируем элементы матрицы
  for(i = 0; i < ROW; i++)
  {
    cout << "Вводим элементы " << i << "столбца" << endl;
    for(j = 0; j < COL; j++)
    {
      cout << i << " " << j << " = ";
      cin >> matrix[i][j];
      // Сразу переводим все числа с положительные
      // чтобы потом не возиться с модулем числа
      if(matrix[i][j] < 0) matrix[i][j] = -matrix[i][j];
    }
  }

  // Выводим для контроля, то что получилось
  cout << endl;
  print_matrix(&matrix[0][0], ROW, COL);

  // Формируем вектор дистанций
  for(i = 0; i < ROW; i++)
  {
    vector[i] = 0;
    for(j = 1; j < COL; j++)
    {
      vector[i] += matrix[i][j] * matrix[i][0];
    }
  }
  // Выводи вектор
  cout << endl;
  for(i = 0; i < ROW; i++)
  {
    cout << "vector[" << i << "] = " << vector[i] << endl;
  }  
  
  // Пауза перед завершением программы
  system("pause");
}

Лучше вручную задачу решить, я намеренно, в программе уменьшил значения в двое до 3 и 4, если вводить значения от 1 до 12 то получается вот такая матрица
1 2 3
4 5 6
7 8 9
10 11 12
а ответ
5
44
119
230
Это хотя бы близко лежит к тому, что нам надо?


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: