нужно создать класс "матрица" и перегрузить операторы >>, <<, + компилятор ошибок не выдает, матрица вводится-все нормально, но когда хочу вывести ее на экран,он просто пропускает и начинает вводить вторую матрицу. со сложение та же проблема, не выводит результат.
| Код |
#include "stdafx.h" #include "conio.h" #include "iostream" using namespace std;
class Matrix { int n,m; //размеры матрицы int **a; // указатель на матрицу public: Matrix() {n=0; m=0;}
Matrix (int r, int e) { n=r; m=e; a=new int *[n]; {for (int i=0;i<n; i++) a[i]=new int [m]; for (int j=0;j<m; j++) cout <<"vvedite matricy\n"; {for (int i=0;i<n; i++) {for (int j=0;j<m; j++) cin >>a[i][j];} } } }
Matrix (const Matrix&A) { n=A.n; m=A.m; a=new int*[n]; for (int i=0;i<n;i++) a[i]=new int[m]; for (int i=0; i<n;i++) for (int j=0; j<m;j++) {a[i][j]=A.a[i][j];} }
~Matrix() {for(int i=0;i<n;i++) delete a[i]; delete a; }
Matrix operator +(const Matrix &A) {Matrix temp(n,m); temp.n=A.n; temp.m=A.m; for (int i=0; i<temp.n; i++) for (int j=0; j<temp.m; j++) { temp.a[i][j]=a[i][j]+A.a[i][j]; } return temp;}
friend ostream& operator << (ostream & cout,Matrix &A); friend istream& operator >> (istream & cin, Matrix &B);
int get_n() {return n;}
int get_m() {return m;}
int **get_a() {return a;}
};
ostream& operator << ( ostream& cout, Matrix &A) { {for (int i=0;i<A.n;i++) {for(int j=0; j<A.m;j++) cout << A.a[i][j]<<" "; cout<<endl;} } return cout;}
istream &operator>>(istream &cin,Matrix &B) {int n,m; cout<<"Vvedite n*m:"; cin>>n>>m; B.a=new int *[n]; for (int i=0;i<n;i++) {B.a[i]=new int [m]; for (int j=0;j<m;j++) cin>>B.a[i][j];} return cin;}
int _tmain(int argc, _TCHAR* argv[]) { Matrix d; Matrix s; Matrix w; cin>>d; cout<<"Matrica 1:"<<endl<<d; cin>>s; cout<<"Matrica 2:"<<s; w=d+s; cout<<"d+s"<<w; getch(); return 0; }
|
|