Сумма матриц в C ++ с использованием перегрузки операторов (C ++) - PullRequest
0 голосов
/ 01 марта 2019

У меня есть этот код для добавления двух матриц с использованием перегруженного оператора '+'.Но в моей программе есть какая-то ошибка.Но я не могу найти ни одного из них.Я должен получить две матрицы от пользователя и затем показать сумму этих двух матриц с помощью функции перегрузки C ++.У меня нет проблем с получением информации от пользователя и отображением каждой из этих матриц в отдельности.Но после вызова функции перегрузки код завершается ошибкой.Я не знаю, где на самом деле.

#include <iostream>
using namespace std;
class matrix
{
    int r=0,c=0,i=0,j=0,e[10][10];
public:
    matrix getMatrix()
    {
        cout<<"Enter the no. of rows of matrix:"<<endl;
        cin>>r;
        cout<<"Enter the no. of columns of matrix:"<<endl;
        cin>>c;
        cout<<"Enter the elements of the matrix:"<<endl;
        for(i=0;i<r;i++)
        {
            for (j=0;j<c;j++)
            {
                cin>>e[i][j];
            }
        }
    }
    matrix operator +(matrix m)
    {
        matrix sumMatrix;
        for(i=0; i<r; i++)
        {
            for (j=0; j<c; j++)
            {
                sumMatrix.e[i][j]=this->e[i][j]+m.e[i][j];
            }
        }
        return sumMatrix;
    }
    void displayMatrix()
    {
        for(i=0; i<r; i++)
        {
            cout<<endl;
            for (j=0; j<c; j++)
            {
                cout<<this->e[i][j]<<"    ";
            }
        }
    }
};
int main()
{
    cout<<"NOTE: In order to add matrices, they must have same dimension."<<endl;
    matrix m1,m2,m3;
    cout<<"1st matrix:"<<endl;
    m1.getMatrix();
    m1.displayMatrix();cout<<endl;
    cout<<"2nt matrix:"<<endl;
    m2.getMatrix();
    m2.displayMatrix();cout<<endl;
    m3=m1+m2;
    cout<<"The sum of the two matrices is:"<<endl;
    m3.displayMatrix();
    return 0;
}

Мой вывод здесь.

1 Ответ

0 голосов
/ 01 марта 2019

Ваша ошибка в том, что вы не установили значения r и c возвращаемого объекта в функции operator+.

matrix operator +(matrix m)
{
    matrix sumMatrix;
    sumMatrix.r = this->r;
    sumMatrix.c = this->c;

    for(i=0; i<r; i++)
    {
        for (j=0; j<c; j++)
        {
            sumMatrix.e[i][j]=this->e[i][j]+m.e[i][j];
        }
    }
    return sumMatrix;
}

Также компилятор ожидает, что getMatrix() вернетматрица.Измените

matrix getMatrix() {...}

на (переименуйте его тоже)

void readFromConsole() {...}
...