C ++ programma divu matricu reizināšanai, izmantojot daudzdimensiju masīvus

Šī programma ņem divas matricas attiecīgi ar r1 * c1 un r2 * c2. Pēc tam programma reizina šīs divas matricas (ja iespējams) un parāda to ekrānā.

Lai saprastu šo piemēru, jums jāzina par šādām C ++ programmēšanas tēmām:

  • C ++ daudzdimensionāli masīvi
  • C ++ masīvi

Lai reizinātu divas matricas, pirmās matricas kolonnu skaitam jābūt vienādam ar rindu skaitu uz otro matricu. Šī programma parāda kļūdu, līdz pirmās matricas kolonnu skaits ir vienāds ar otrās matricas rindu skaitu.

Piemērs: Reiziniet divas matricas, neizmantojot funkcijas

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

Rezultāts

Ievadiet rindas un kolonnu pirmajai matricai: 3 2 Ievadiet rindas un kolonnu otrajai matricai: 3 2 Kļūda! pirmās matricas kolonna nav vienāda ar otrās rindas kolonnu. Ievadiet rindas un kolonnu pirmajai matricai: 2 3 Ievadiet rindas un kolonnu otrajai matricai: 3 2 Ievadiet 1. matricas elementus: ievadiet elementus a11: 3 ievadiet elementus a12: -2 ievadiet elementus a13: 5 ievadiet elementus a21: 3 ievadiet elementus a22 : 0 Ievadiet elementus a23: 4 Ievadiet matricas 2 elementus: ievadiet elementus b11: 2 ievadiet elementus b12: 3 ievadiet elementus b21: -9 ievadiet elementus b22: 0 ievadiet elementus b31: 0 ievadiet elementus b32: 4 izejas matricas: 24 29 6 25

Šajā programmā lietotājam vispirms tiek lūgts ievadīt divu matricu lielumu.

Pirmās matricas kolonnai jābūt vienādai ar otrās matricas rindu reizināšanai. Ja šis nosacījums nav izpildīts, tad matricas lielums atkal tiek jautāts, izmantojot while loop.

Pēc tam lietotājam tiek lūgts ievadīt divas matricas, un visbeidzot tiek aprēķināta un parādīta divu matricu izeja.

Tā kā programma ir gara un to ir grūti atkļūdot, labāk ir atrisināt šo programmu, nododot to funkcijai.

Apmeklējiet šo lapu, lai uzzinātu vairāk par matricu reizināšanu, masīvus nododot funkcijai.

Interesanti raksti...