Я прохожу курс ООП в колледже, мы должны перегрузить операторы +, -, *, + =, - = и некоторые другие для обработки операций с матрицами, используя только структуры и перегрузка операторов ,Я придумал этот код, пользователь вводит массив 1D , а затем этот массив превращается в массив 2D или матрица .
Функция createMatrix
возьмет 1D-массив и затем определит количество строк и столбцов затем поместите значения в этом массиве в структуру matrix
или в элемент в структуре, чтобы быть конкретными.затем я определил +, - и <<. </p>
Это еще не завершено, но программа ничего не выводит, и я не могу найти, где находится ошибка, в операторе '+'или оператор «<<», который обрабатывает вывод матриц. </p>
#include <iostream>
#include <algorithm>
using namespace std;
struct matrix{
int* data; //since it is a 1d array which will later be stored in the matrix
int row, col;
};
void createMatrix(int row, int col, int num[], matrix& mat); //by reference so that I fetch it by address from memory
matrix operator+ (matrix mat1, matrix mat2){ //Addition
matrix mat;
for(int i = 0; i < max(mat1.row*mat1.col, mat2.row*mat2.col); i++){
mat.data[i] = mat1.data[i] + mat2.data[i];
}
return mat;
}
matrix operator- (matrix mat1, matrix mat2){ //Subtraction
matrix mat;
for(int i = 0;i < max(mat1.row*mat1.col, mat2.row*mat2.col); i++){
mat.row = mat1.row - mat2.row;
}
return mat;
}
ostream operator<< (ostream& out, matrix mat){
for(int i = 0; i < ((mat.row)*(mat.col)); i++){
if(i % mat.row == 0 ){
cout<<endl;
}
else{out<<mat.data[i]<<" ";}
}
}
int main()
{
int row1, col1;
int row2, col2;
cout<<"Enter Rows of first matrix: "; cin>>row1;
cout<<"Enter Cols of first matrix: "; cin>>col1;
cout<<"Enter Rows of second matrix: "; cin>>row2;
cout<<"Enter Cols of second matrix: "; cin>>col2;
int arr1[row1*col1], arr2[row2*col2];
cout<<"Enter the values you which to add in the first matrix: ";
for(int i = 0; i < row1*col1; i++){
cin>>arr1[i];
}
cout<<"Enter the values you which to add in the second matrix: ";
for(int i = 0; i < row2*col2; i++){
cin>>arr2[i];
}
matrix mat1, mat2, mat3;
createMatrix(row1, col1, arr1, mat1);
createMatrix(row2, col2, arr2, mat2);
mat3 = mat1 + mat2;
cout<<mat3;
return 0;
}
void createMatrix(int row, int col, int num[], matrix& mat){
mat.row = row;
mat.col = col;
mat.data = new int [col * row]; //We are trying to make a matrix from a 1d array, so we will stretch the matrix -which is a 2d array
for(int i = 0; i < col * row; i++){ //in 1-D of size row *col
mat.data[i] = num[i]; //Depending on the parameter the data array will be filled dynamically
}
}