PDA

Просмотр полной версии : Перемножение матриц ПРОБЛЕМА!!!



SilentM
19.04.2009, 17:07
Проблема с перемножением матриц 3*3.
С клавы вводим матрицы А и Б и надо их перемножить..
Помогите ПЛИЗЗЗ!!!
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Как производить сплюсовывание?? считает все правильно, но С[1][1] надо сложить c C[1][1] и т.д. и получить готовую матрицу.. Как сложить??

#include<iostream>
#include<math.h>
using namespace std;
const N=3;
void main()
{int i,j,A[N][N],B[N][N],k,C[N][N];

for (i=1; i<N; i++)
for (j=1; j<N; j++)
{cout<<"A["<<i<<"]["<<j<<"]=";
cin>>A[i][j];}

for (i=1; i<N; i++)
for (j=1; j<N; j++)
{cout<<"B["<<i<<"]["<<j<<"]=";
cin>>B[i][j];}

for (i=1; i<N; i++)
for (j=1; j<N; j++)
for (k=1; k<N; k++)
{C[i][k]=A[i][j]*B[j][k];
cout<<"C["<<i<<"]["<<k<<"]="<<C[i][k]<<endl;}

}

Rycharg
21.04.2009, 21:41
Приветствую.
А Вас не смущает, что для инициализации матрицы 3*3 Вам достаточно четырёх чисел? Советую входить в циклы с i и j равными нулю, а на консоль выводит i+1( j+1).




for (i=1; i<N; i++)
for (j=1; j<N; j++)
for (k=1; k<N; k++)
{C[i][k]=A[i][j]*B[j][k];
cout<<"C["<<i<<"]["<<k<<"]="<<C[i][k]<<endl;}

А может так?


for(i = 0; i < N; ++i)
for(j = 0; j < N; ++j){
for(k = 0; k < N; ++k)
C[i][j] += A[i][k] * B[k][j];
cout << "C[" << i + 1 << "][" << j + 1 << "]=" << C[i][j] << endl;
}

Только стоит обнулить матрицу С перед входом в цикл.

З.Ы. Для успешного выполнения операторов "+", "-", "/", "*", "=" и "[]" не обязательно подключать math.h)).