Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ego
1 / 1 / 0
Регистрация: 04.12.2011
Сообщений: 10
#1

Рассматривая каждую строку прямоугольной матрицы как вектор, найти номера векторов-строк, для которых модуль их скалярного произведения S имеет максим - C++

21.12.2011, 21:20. Просмотров 634. Ответов 3
Метки нет (Все метки)

Рассматривая каждую строку прямоугольной матрицы как вектор, найти номера векторов-строк, для которых модуль их скалярного произведения S имеет максимальное значение.

в программе 3 массива: один перебирает матрицу по столбцам, а два других по строкам попарно. Помогите пожалуйста с расставлением скобок(скорее всего в них ошибка). А то программа выдаёт только 4 значения, а должна 10

собственно и сама программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
const int M=5;
const int N=4;
 
int main()
{ int i, j, i1, P[M][N], X, num1, num2, Xmax=-1000;
  for(i=0; i<M; i++)
  for(j=0; j<N; j++)
  P[i][j]=rand()%8;
  printf("Matrix P\n");
  for (i=0; i<M; i++){ 
      for (j=0; j<N; j++)
          printf("%4d", P[i][j]);
          printf("\n");
    }
     for(j=0; j<N; j++)
     {
     for(i=0; i<M-1; i++)
              for(i1=i+1; i1<M; i1++)
                          X+=P[i][j]*P[i1][j];     
                          printf ("\n\n%4d", X);             
     }
     if (X>Xmax) {Xmax=X; num1=i; num2=i1;}
     printf ("\n\n%d   %d   %d", X, num1, num2);
getch();
return 0;
}
 Комментарий модератора 
Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2011, 21:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рассматривая каждую строку прямоугольной матрицы как вектор, найти номера векторов-строк, для которых модуль их скалярного произведения S имеет максим (C++):

ScalarProduct для вычисления скалярного произведения двух векторов - C++
Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов. Заранее спасибо...

Напечатать номера строк и столбца прямоугольной матрицы, на пересечении которых стоит максимальный элемент - C++
7.5.2. Помогите, пожалуйста, решить задачу в С++. Напечатать номера строк и столбца прямоугольной матрицы, на пересечении которых...

Напечатать номера строк и столбца прямоугольной матрицы, на пересечении которых стоит минимальный элемент. - C++
7.7.2. Помогите, пожалуйста, решить задачу в С++. Напечатать номера строк и столбца прямоугольной матрицы, на пересечении которых...

Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов - C++
Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов. Вот отрывок, надо...

Определить номера тех строк матрицы, у которых знак произведения их элементов отрицателен - C++
Задана матрица с 2 столбцами и N строками. Определить номера тех строк, у которых знак произведения их элементов отрицателен.

Реализация скалярного произведения двух векторов с оптиммизацией на CUDA - C++
помагите реализовать операцию скалярного произведения двух векторов размерностью N на C++ с оптиммизацией на CUDA

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.12.2011, 21:46 #2
Предполагаю, строки 25 и 26 необходимо поменять местами.
1
ego
1 / 1 / 0
Регистрация: 04.12.2011
Сообщений: 10
21.12.2011, 21:50  [ТС] #3
поменял, всё равно 4 значения выдаёт
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.12.2011, 22:12 #4
Не так вы делаете
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int summa (int mt[][COLUMNS], int i)
{
    int sum = 0;
    int j;
    
    for ( j = 0 ; j < COLUMNS ; ++j )
        sum += mt[i][j];
        
    return sum;
}
 
// считаем
max = summa (matr, 0);
for ( i = 1 ; i < ROWS ; ++i )
    if ( summa (matr, i) > max )
        max = summa (matr, i);
 
for ( i = 1 ; i < ROWS ; ++i )
    if ( summa (matr, i) == max )
        printf ("\n %d", i);
Добавлено через 10 минут
Под "скалярным произведение" я понимал обычное произведение элементов строки матрицы.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2011, 22:12
Привет! Вот еще темы с ответами:

Доказать утверждение для скалярного произведения векторов. - Геометрия
Доказать, что скалярное произведение двух векторов не изменится, если к одному из них прибавить вектор, ортогональный другому сомножителю.

Создать собственный модуль "Вычисление скалярного произведения векторов в 3-меpном пространстве" - Turbo Pascal
Создать собственный модуль и программу, использующую этот модуль. Вычисление скалярного произведения векторов в 3-меpном пространстве....

Определить номера строк прямоугольной матрицы, хотя бы один из которых равен k - Visual Basic .NET
Необходимо составить программу (консольное приложение). Определить номера строк прямоугольной матрицы (двумерный массив), хотя бы один...

Написать рекурсивную программу для определения скалярного произведения двух векторов - Free Pascal
Напишите рекурсивную программу для определения скалярного произведения двух векторов. помогите пожалуйста решить срочно надо а то я не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.12.2011, 22:12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru