Программа на C ++ для умножения двух матриц с помощью многомерных массивов

Эта программа принимает две матрицы порядка r1 * c1 и r2 * c2 соответственно. Затем программа умножает эти две матрицы (если возможно) и отображает их на экране.

Чтобы понять этот пример, вы должны знать следующие темы программирования на C ++:

  • Многомерные массивы C ++
  • Массивы C ++

Чтобы перемножить две матрицы, количество столбцов первой матрицы должно быть равно количеству строк второй матрицы. Эта программа отображает ошибку до тех пор, пока количество столбцов первой матрицы не станет равным количеству строк второй матрицы.

Пример: умножение двух матриц без использования функций

 #include using namespace std; int main() ( int a(10)(10), b(10)(10), mult(10)(10), r1, c1, r2, c2, i, j, k; cout <> r1>> c1; cout <> r2>> c2; // If column of first matrix in not equal to row of second matrix, // ask the user to enter the size of matrix again. while (c1!=r2) ( cout << "Error! column of first matrix not equal to row of second."; cout <> r1>> c1; cout <> r2>> c2; ) // Storing elements of first matrix. cout << endl << "Enter elements of matrix 1:" << endl; for(i = 0; i < r1; ++i) for(j = 0; j < c1; ++j) ( cout << "Enter element a" << i + 1 << j + 1 <> a(i)(j); ) // Storing elements of second matrix. cout << endl << "Enter elements of matrix 2:" << endl; for(i = 0; i < r2; ++i) for(j = 0; j < c2; ++j) ( cout << "Enter element b" << i + 1 << j + 1 <> b(i)(j); ) // Initializing elements of matrix mult to 0. for(i = 0; i < r1; ++i) for(j = 0; j < c2; ++j) ( mult(i)(j)=0; ) // Multiplying matrix a and b and storing in array mult. for(i = 0; i < r1; ++i) for(j = 0; j < c2; ++j) for(k = 0; k < c1; ++k) ( mult(i)(j) += a(i)(k) * b(k)(j); ) // Displaying the multiplication of two matrix. cout << endl << "Output Matrix: " << endl; for(i = 0; i < r1; ++i) for(j = 0; j < c2; ++j) ( cout << " " << mult(i)(j); if(j == c2-1) cout << endl; ) return 0; ) 

Вывод

Введите строки и столбец для первой матрицы: 3 2 Введите строки и столбец для второй матрицы: 3 2 Ошибка! столбец первой матрицы не равен строке второй. Введите строки и столбец для первой матрицы: 2 3 Введите строки и столбец для второй матрицы: 3 2 Введите элементы матрицы 1: введите элементы a11: 3 Введите элементы a12: -2 Введите элементы a13: 5 Введите элементы a21: 3 Введите элементы a22 : 0 Введите элементы a23: 4 Введите элементы матрицы 2: Введите элементы b11: 2 Введите элементы b12: 3 Введите элементы b21: -9 Введите элементы b22: 0 Введите элементы b31: 0 Введите элементы b32: 4 Выходную матрицу: 24 29 6 25

В этой программе пользователя сначала просят ввести размер двух матриц.

Столбец первой матрицы должен быть равен строке второй матрицы для умножения. Если это условие не выполняется, размер матрицы снова запрашивается с помощью цикла while.

Затем пользователя просят ввести две матрицы, и, наконец, рассчитывается и отображается результат двух матриц.

Поскольку программа длинная и ее сложно отлаживать, лучше решить эту программу, передав ее функции.

Посетите эту страницу, чтобы узнать об умножении матриц путем передачи массивов в функцию.

Интересные статьи...