Я пытаюсь вычесть две матрицы и распечатать их в этом формате cout << (mat1 - mat2) << endl;но cout не работает, он работает, когда я печатаю одну матрицу </p>
вот код
#include <iostream>
#include <iomanip>
using namespace std;
struct matrix {
int** data;
int row, col;
};
void createMatrix (int row, int col, int num[], matrix& mat) {
mat.row = row;
mat.col = col;
mat.data = new int* [row];
for (int i = 0; i < row; i++)
mat.data[i] = new int [col];
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
mat.data[i][j] = num[i * col + j];
}}} ;
вот функция, которую кто-то сказал мне использовать "const" я сделал, но это все ещене работает
ostream& operator<< (ostream& out ,const matrix& mat ) {
for (int i =0 ; i< mat.row ; i++) {
for (int j =0 ; j < mat.col ; j++) {
out << mat.data [i] [j] << " " ;
}
cout << endl ;
}
return out ;
};
, когда я печатаю его в этой функции, он работает хорошо, но не работает в основном
matrix operator- (matrix mat1, matrix mat2) {
matrix matt ;
if ((mat1.row == mat2.row) && (mat1.col == mat2.col)) {;
for (int i =0 ; i< mat1.row ; i++) {
for (int j =0 ; j < mat1.col ; j++) {
matt.data[i][j] = ((mat1.data [i][j]) - (mat2.data [i][j])) ;
}
}}
else {
cout << " the matrixs dont have the same dimensions " << endl ;
}
return matt ;
};
int main() {
int data1 [] = {1,2,3,4,5,6,7,8};
int data2 [] = {13,233,3,4,5,6};
int data3 [] = {10,100,10,100,10,100,10,100};
matrix mat1, mat2, mat3;
createMatrix (4, 2, data1, mat1);
createMatrix (2, 3, data2, mat2);
createMatrix (4, 2, data3, mat3);
cout << mat1 << endl;
cout << mat2 << endl;
cout << mat3 << endl;
cout << ( mat3 - mat1 ) << endl ;
};