Перемножение/транспонирование матриц
Добавлено: 23 мар 2013, 19:00
Написал программу , в ней две функции: одна для транспонирования, другая для перемножения матриц. Обе возвращают указатели на массив указателей на массив (чтобы как-то вывести массив из функции). Функция transpose нормально возвращает транспонированную матрицу, но функция multiply возвращает матрицу ( ну т. е. указатель) , в которой почему-то только элементы с индексами 1/3 2/3 3/3 нормальные , в остальных бредятина выводится. Пожалуйста, помогите найти ошибку.
Заранее спасибо!
Код: Выделить всё
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int **transpose(int arr[][3], int x, int y){
int **tmass;
tmass=new int*[3];
for (int i=0; i<x; i++){
tmass[i]=new int[3];
for (int j=0; j<y; j++){
tmass[i][j]=arr[j][i];
}
}
return tmass;
}
int **multiply(int massiv1[][3], int massiv2[][3], int x ,int y){
int **ResultMatrix;
int sum;
ResultMatrix=new int*[3];
for (int i=0; i<x; i++){
for (int j=0; j<y; j++){
sum=0;
ResultMatrix[i]=new int[y];
for (int n=0; n<y; n++){
sum+=massiv1[i][n]*massiv2[n][j];
}
ResultMatrix[i][j]=sum;
}
}
return ResultMatrix;
}
int main()
{
int E[3][3]={1,0,0,
0,1,0,
0,0,1};
int A[3][3], B[3][3],X[3][1];
for (int i=0; i<3; i++){
for(int j=0;j<3;j++){
A[i][j]=rand()%(9+9+1)-9;
B[i][j]=rand()%(9+9+1)-9;
}
}
for (int i=0; i<3; i++){
for(int j=0;j<1;j++){
X[i][j]=rand()%(9+9+1)-9;
}
}
int AE1 [3][3];
int **AE=multiply(A, B, 3, 3);
multiply(A, B, 3,3);
for(int i=0;i<3;i++){
for(int j=0; j<3;j++){
AE1[i][j]=AE[i][j];
cout<<AE1[i][j]<<",";
}
cout<<endl;
}
getch();
return 0;
}