Program C ++ na násobenie dvoch matíc pomocou viacrozmerných polí

Tento program má dve matice rádu r1 * c1 a r2 * c2. Potom program znásobí tieto dve matice (ak je to možné) a zobrazí ich na obrazovke.

Aby ste pochopili tento príklad, mali by ste mať znalosti nasledujúcich programovacích tém C ++:

  • C ++ multidimenzionálne polia
  • Polia C ++

Na znásobenie dvoch matíc by sa počet stĺpcov prvej matice mal rovnať počtu riadkov k druhej matici. Tento program zobrazuje chybu, kým sa počet stĺpcov prvej matice nerovná počtu riadkov druhej matice.

Príklad: Vynásobte dve matice bez použitia funkcií

 #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; ) 

Výkon

Zadajte riadky a stĺpec pre prvú maticu: 3 2 Zadajte riadky a stĺpec pre druhú maticu: 3 2 Chyba! stĺpec prvej matice sa nerovná riadku druhej. Zadajte riadky a stĺpec pre prvú maticu: 2 3 Zadajte riadky a stĺpec pre druhú maticu: 3 2 Zadajte prvky matice 1: Zadajte prvky a11: 3 Zadajte prvky a12: -2 Zadajte prvky a13: 5 Zadajte prvky a21: 3 Zadajte prvky a22 : 0 Zadajte prvky a23: 4 Zadajte prvky matice 2: Zadajte prvky b11: 2 Zadajte prvky b12: 3 Zadajte prvky b21: -9 Zadajte prvky b22: 0 Zadajte prvky b31: 0 Zadajte prvky b32: 4 Výstupná matica: 24 29 6 25

V tomto programe je používateľ najskôr požiadaný o zadanie veľkosti dvoch matíc.

Stĺpec prvej matice by sa mal pre násobenie rovnať riadku druhej matice. Ak táto podmienka nie je splnená, potom sa veľkosť matice znova vyžiada pomocou cyklu while.

Potom je užívateľ vyzvaný na zadanie dvoch matíc a nakoniec je vypočítaný a zobrazený výstup z dvoch matíc.

Pretože je program dlhý a ťažko laditeľný, je lepšie ho vyriešiť tak, že ho odovzdáme funkcii.

Na tejto stránke nájdete ďalšie informácie o znásobení matíc odovzdaním polí do funkcie.

Zaujímavé články...