Форум: Форум C++Разное
Новые темы: 00
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получить из матрицы вектор с дистанцией от первого ряда
 
 автор: Анастасия   (29.12.2011 в 18:48)   письмо автору
 
 

Помогите пожалуйста!
Последняя надежда на вас)
нужно написать программу и блок-схему,ну или хотябы просто программу
Дана матрица 6х8 с действительными числами(float).
Создайте вектор столбцом с максимальной дистанцией от первого ряда.
Дистанция : dj=сумма,где і=1 по n*|aij|*|ai1|,j!=1
i,j,ij,i1 - индексы
Джей(обычная маленькая буква не равно единицы)

  Ответить  
 
 автор: cheops   (29.12.2011 в 19:07)   письмо автору
 
   для: Анастасия   (29.12.2011 в 18:48)
 

1. 6 - это количество строк, а 8 - количество столбцов?
2. А в формуле n*|aij|*|ai1| откуда берется n? Это просто 8 (или 6, если ответ на первый вопрос отрицательный)?

  Ответить  
 
 автор: Анастасия   (29.12.2011 в 20:13)   письмо автору
 
   для: cheops   (29.12.2011 в 19:07)
 

1.6-столбец
8-строка
2. там идет значок суммы.вверху n,внизу i=1,после значка суммы произведение двух модулей |aij|*|ai1|

  Ответить  
 
 автор: cheops   (29.12.2011 в 22:31)   письмо автору
 
   для: Анастасия   (29.12.2011 в 20:13)
 

Хм... вот судя по формуле, 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
Это хотя бы близко лежит к тому, что нам надо?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования