Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2017, 00:53   #1
alexboliam
Пользователь
 
Регистрация: 10.10.2017
Сообщений: 44
По умолчанию [C++] Подскажите, как дописать код. Построить вектор, элементы которого скалярное произведение строк на столбец, содержащий наибольший элемент в этой строке

Задача: "На основе заданной матрицы А (n х n) построить вектор Х(n), элементы которого хi - скалярное произведение i-й строки матрицы А на столбец, содержащий наибольший элемент в этой строке."
Я написал такой фрагмент кода, в котором вместо (w) я думал потом фактическим параметром подставлять номер строки (i):
Код:
typedef int matrix[10][10];
void input(matrix, int);
void output(matrix, int);
int max(matrix, int, int);
 
int main()
{
    matrix A;
    int n;
    cin >> n ;
    input(A, n);
    output(A, n);
    system("pause");
    
}
 
void input(matrix p, int q)
{
    srand(time(NULL));
    for (int i = 0; i < q; i++) {
        for (int j = 0; j < q; j++)
            p[i][j] = rand() % 9;
    }
}
void output(matrix p, int q)
{
    for (int i = 0; i < q; i++) {
        for (int j = 0; j < q; j++) {
            cout << setw(4) << p[i][j];
        }
        cout << endl;
    }
}
int max(matrix l,int h, int w)
{
    int m = l[w][0];
    int jmax = 0;
    for (int j = 0; j < h; j++) {
        if (l[w][j] > m)
        {
            m = l[w][j];
            jmax = j;
        }
    }
    return jmax;
}
В функции max я написал как находить номер столбца с максимальным элементом в строке (jmax) (по крайней мере, я думаю, что это верно), но как дописать функцию которая будет создавать массив, в котором элементы будут равны скалярному произведению каждой строки на соответствующий каждой строке столбец?(т.е. и функцию произвидения тоже надо)

Последний раз редактировалось alexboliam; 21.12.2017 в 00:59. Причина: Лишние строки
alexboliam вне форума Ответить с цитированием
Старый 21.12.2017, 01:09   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Прям по определению. Или вы не знаете, что такое скалярное произведение? Там же фактически один цикл будет.
p51x вне форума Ответить с цитированием
Старый 21.12.2017, 01:32   #3
alexboliam
Пользователь
 
Регистрация: 10.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Прям по определению. Или вы не знаете, что такое скалярное произведение? Там же фактически один цикл будет.
a[0]*b[0] + a[1]*b[1] + ...
Я попросил помочь с этим циклом, я в нем немного запутался
Сначала , думаю, берем
Код:
for(i=0;i<q;i++){
   j = max(p,q,i);
   а вот дальше я запутался

Последний раз редактировалось alexboliam; 21.12.2017 в 01:43.
alexboliam вне форума Ответить с цитированием
Старый 21.12.2017, 09:13   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Так разберитесь в математике и цикл сам появится. Вот a[0], a[1], ... кто это? a[w][0] или a[0][w] для вашей матрицы? Так же и с b.
p51x вне форума Ответить с цитированием
Старый 21.12.2017, 20:53   #5
alexboliam
Пользователь
 
Регистрация: 10.10.2017
Сообщений: 44
По умолчанию

Еле сегодня сделал её. Нарисовал для себя таблицу, как располагаются элементы этого массива и додумал таки.
Код:
int max(matrix p,int q, int row)
{
	int m = p[row][0];
	int jmax = 0;
	for (int j = 0; j < q; j++) {
		if (p[row][j] > m)
		{
			m = p[row][j];
			jmax = j;
		}
	}
	return jmax;
}
void calc(matrix p, int q, matrix2 k)
{
	for (int i = 0; i < q;i++)
	{
		int solve = 0;
		int jmax = max(p, q, i);
		for (int j = 0; j < q; j++)
		{
			solve += p[i][j]*p[j][jmax];
		}
		k[i] = solve;
	}
	output2(k, q);
}
alexboliam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скалярное произведение строк матрицы на 2-ой столбец seniks Windows Forms 1 06.12.2017 23:35
Построить вектор, элементы которого равны произведению соответствующих элементов двух других векторов Andarg C# (си шарп) 0 25.05.2014 15:11
процедуры и функции : Дан вектор A(n). Построить вектор B(n), i-ый элемент которого равен среднему арифметическому (Паскаль) vladicvladic123 Помощь студентам 2 04.12.2013 14:56
Найти скалярное произведение i строки на i столбец элементы матрицы зада по след правилу (Нафаня) Помощь студентам 5 07.06.2012 13:49
Построить вектор, каждый элемент которого равен наибольшему количеству равных элементов в соответствующей abakuz Помощь студентам 0 28.05.2011 18:08