Другие языки программирования и технологии

Помогите решить задачи по C++

Доброго времени суток есть некоторые проблемы по задачам по Си точнее не получается сделать помогите пожалуйста кто знает задача вот такая : Даны матрицы AxB размена mxn и mxl соответвенно. Найти произведение AB. Буду очень благодарен :)
Михон Зевс
Михон Зевс
201
Да, да. Требуется три массива, два под матрицы со значениями и одна для результата. Далее в цикле for двигаетесь одновременно по первому столбцу матрицы А и по первой строке матрицы В, выполняя в теле цикла умножение двух значений и заносите их в третью матрицу путём присваивания. Для матрицы 3 х 3 следующий алгоритм:

int a[3][3], b[3][3], c[3][3];
for (int t = 0; t < 3; t++)
for (int j = 0; j < 3; j++)
for (int k = 0; k < 3; k++)
c[t][j] += a[t][k] * b[t][k];

©
Евгений Шкарбанов
Евгений Шкарбанов
77 548
Лучший ответ
Может всё-таки nxm и mxl !? Иначе у Вас будут проблемы с перемножением матриц!
Всё с точностью до наоборот! При перемножении матриц строка первой матрицы умножается на столбец второй. Если первый индекс - это номер строки и учитывая поправку Юрия:

for(int i = 0; i < n; i++)
for(int j = 0; j < l; j++)
for(k = 0; k < m; k++)
C[ i ][ j ] += A[ i ][ k ] * B[ k ][ j ];

Кажется, так. Только естественно, матрицы A, B и C должны быть созданы, а все элементы матрицы C должны быть обнулены. Для последнего можно использовать, например memset(C, 0, sizeof(C)); (Пробелы в квадратных скобках можно не ставить. Я это сделал только чтобы правильно отображался код).
Болат Амиров
Болат Амиров
76 386
строка на столбец строка на столбец и так далее
Ну так, вопрос, умеете ли вы вручную матрицы перемножать? Или тоже проблема?
На бумажке умете это делать? Так реализуйте это же на си. Пондобится несколько циклов и новый (или несколько) массив. думайте! Когда догадаетесь и откомпилите радости не будет предела. В этом и прелесть программирования!