Справка по методу добавления массива в C ++ для построения 2d матрицы для добавления и других математических объектов - PullRequest
0 голосов
/ 25 января 2012

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

моя функция класса

Matrix Matrix:: add(const Matrix & m) const
{
    Matrix v; // I know to make a matrix to add

    // I tried this but seems to not work
    v=v[rows][cols]+ m[rows][cols];
    return v
}

Я думаю, я понял это сейчас.Спасибо!Но я все равно проголосую за лучший ответ, так что имейте это!Это может быть полезно для других студентов.

Ответы [ 2 ]

0 голосов
/ 25 января 2012

Я собираюсь сделать удар и предположить, что ваш класс матрицы выглядит примерно так:

class Matrix
{
    public:
        int width;
        int height;
        int data[width][height];
}

Если вы хотите добавить две матрицы, вам нужна какая-то функция, которая берет две матрицы и создает третью матрицу, так что каждое значение в данных является сложением двух соответствующих значений в исходных матрицах. Одна из таких функций может выглядеть так:

Matrix add(const Matrix& lhs, const Matrix& rhs)
{
    Matrix output;
    for(int row = 0; row < lhs.height; ++row)
    {
        for(int column = 0; column < lhs.widtht; ++column)
        {
            output.data[row][column] = lhs.data[row][column] + rhs.data[row][column];
        }
    }
    return output;
}

Мы собираемся предположить, что матрицы имеют одинаковый размер, и игнорируем проблемы, вызываемые матрицами разных размеров. Таким образом, все, что мы делаем, это перебираем обе матрицы и добавляем значения в новую матрицу. Теперь мы можем назвать код как:

Matrix a; // Pretend this already has data
Matrix b; // Ditto
Matrix c = add(a, b);

Вы можете видеть, куда это идет, все, что осталось, это сделать его оператором, как правило, когда вы набираете

a + b

То, что на самом деле видит компилятор, это

operator+(a, b)

Так что все, что осталось, это переименовать функцию добавления в

Matrix operator+(const Matrix& lhs, const Matrix& rhs)
0 голосов
/ 25 января 2012

Для этого вам необходимо перегрузить operator+ и operator+=.

Matrix& operator+ (Matrix lhs, const Matrix& rhs)
{
    //do your addition
    return *this;

}

Более подробную информацию о перегрузке операторов см. В этой ветке вопросов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...