Нахождение квадрата матрицы.
Добавлено: 20 апр 2013, 18:57
Вообще знаю как это сделать, и сделал. Но решил я это сделать с классами. Вообщем вот мой код:
Программа вылетает. Вообщем вся проблема в этой строчке Думал что с указателем напутал, но если просто для эксперемента написать то программа работает (правда не так как надо). Вот и ломаю голову, что я не так сделал?
Код: Выделить всё
#include <iostream>
#include <time.h>
#include <fstream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;
class qwadra {
public:
int **mas; //сама матрица сдесь
int **kwmas; //сюда закину квадратную матрицу
int a, b; //размер матрицы
int** InitDwumerMas (int** mas, int a, int b);
int** qwadratMatrics (int** mas, int** kwmas, int a, int b);
~qwadra()
{
for (int i = 0; i<a; i++){ delete[] mas[i]; }
delete[] mas;
};
};
int** qwadra::InitDwumerMas (int** mas, int a, int b) //выделение памяти двумерного динамического массива
{
mas = new int* [a];
for(int i=0; i<a; i++)
{
mas[i] = new int[b];
}
return mas;
}
int** qwadra::qwadratMatrics (int** mas, int** kwmas, int a, int b) //нахождение квадрата матрицы
{
int W=0;
for (int i=0; i<a; i++)
{
for (int j=0; j<b; j++)
{
for (int l=0; l<b; l++)
{
W=mas[i][l]*mas[l][j]+W;
}
kwmas[i][j]=W;
W=0;
}
cout << endl;
}
return kwmas;
}
int main()
{
int N, M;
int** matrics;
int** matrics2;
qwadra cl;
ifstream file1; //открываем фаил для чтение.
file1.open("file1.txt");
file1>>N; //записываем первое число из файла то есть размер матрицы
file1>>M; //записываем второе число
matrics=cl.InitDwumerMas (matrics, M, N); //выделяем память
matrics=cl.InitDwumerMas (matrics2, M, N);
for (int i=0; i<N; i++) //сяитываем элементы матрицы из файла и записываем в массив
{
for (int j=0; j<M; j++)
{
file1>>matrics[i][j];
}
}
matrics=cl.qwadratMatrics (matrics, matrics2, M, N); //находим квадрат матрицы
for (int i=0; i<N; i++) //вывод массива
{
for (int j=0; j<M; j++)
{
cout << setw(4) << matrics[i][j];
}
cout << endl;
}
cout << endl;
}
Код: Выделить всё
kwmas[i][j]=W;
Код: Выделить всё
mas[i][j]=W;