Почему выходные данные программы таковы в C++?
Вход 2-2-2 выход junt "4".
Что я должен сделать, чтобы получить правильный результат?
Что я уже пробовал:
#include<iostream> using namespace std; int i,j,k,resultt; float a[10][10],b[10][10]; class result { public: // int a[10][10],b[10][10],mlt[10][10],i,j; float mlt[10][10]; float multipication_matrices() { /* int i,j,k,result,mult; for(i = 0; i < 4; ++i) for(j = 0; j < 4; ++j) { mlt[i][j]=0; } */ for(i = 0; i < 4; ++i) for(j = 0; j < 4; ++j) for(k = 0; k < 4; ++k) { resultt = mlt[i][j] = a[i][k] * b[k][j]; } return resultt;} }r; int main() { cout << "Enter elements of matrix 1:" << endl; for(i = 0; i < 4; ++i) for(j = 0; j < 4; ++j) { cout << "Enter element a" << i + 1 << j + 1 << " : "; cin >> a[i][j]; } cout << "Enter elements of matrix 2:" << endl; for(i = 0; i < 4; ++i) for(j = 0; j < 4; ++j) { cout << "Enter element b" << i + 1 << j + 1 << " : "; cin >> b[i][j]; } cout << endl << "Output Matrix: " << endl; for(i = 0; i < 4; ++i) for(j = 0; j < 4; ++j) { cout << " " << r.multipication_matrices(); if(j == 4-1) cout << endl; } return 0; }
Richard MacCutchan
Вы объявили свои массивы в двух местах, поэтому числа хранятся не в том месте.
Patrice T
и что же должен делать этот код?
Member 13465205
ладно, я все исправлю. но опять же. а теперь выходы будут Би 47-47-47.... :)
Member 13465205
4x4 матричное умножение с функцией в классе.
Richard MacCutchan
result = mlt[i][j] += a[i][k] * b[k][j];
А почему у вас есть +=
в этом заявлении? Я бы подумал просто =
.
Member 13465205
но этого недостаточно для бега.
Richard MacCutchan
Что это значит?
Member 13465205
я делаю"=", но этого недостаточно для истинного вывода.
Richard MacCutchan
Извините, но это действительно не помогает. Пожалуйста, отредактируйте свой вопрос с помощью последнего кода, который вы пробовали, и объясните точно, какие значения используются для входных данных и какие результаты вы видите.
Richard MacCutchan
Пожалуйста, прочтите мой предыдущий комментарий еще раз и предоставьте то, что я просил. И, пожалуйста, используйте Улучшить вопрос ссылка для размещения информации в вопросе.
Richard MacCutchan
Последний цикл в вашем коде не имеет никакого смысла. Вызов r.multipication_matrices();
всегда будет возвращать одно и то же значение, которое является результатом последней операции умножения. Дизайн вашего класса на самом деле не помогает вам. То, что вы должны иметь в качестве класса, - это матричный класс, который может динамически создавать новую матрицу при ее создании. Затем вы можете добавить методы для сложения, вычитания, умножения и деления с использованием других матричных объектов.