Program C ++ pro násobení dvou matic pomocí vícerozměrných polí

Tento program má dvě matice řádu r1 * c1 a r2 * c2. Poté program tyto dvě matice (pokud je to možné) znásobí a zobrazí na obrazovce.

Abychom porozuměli tomuto příkladu, měli byste znát následující programovací témata C ++:

  • C ++ vícerozměrná pole
  • Pole C ++

Chcete-li znásobit dvě matice, měl by se počet sloupců první matice rovnat počtu řádků do druhé matice. Tento program zobrazuje chybu, dokud se počet sloupců první matice nerovná počtu řádků druhé matice.

Příklad: Znásobte dvě matice bez použití funkcí

 #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ýstup

Zadejte řádky a sloupec pro první matici: 3 2 Zadejte řádky a sloupec pro druhou matici: 3 2 Chyba! sloupec první matice neodpovídá řádku druhé. Zadejte řádky a sloupec pro první matici: 2 3 Zadejte řádky a sloupec pro druhou matici: 3 2 Zadejte prvky matice 1: Zadejte prvky a11: 3 Zadejte prvky a12: -2 Zadejte prvky a13: 5 Zadejte prvky a21: 3 Zadejte prvky a22 : 0 Zadejte prvky a23: 4 Zadejte prvky matice 2: Zadejte prvky b11: 2 Zadejte prvky b12: 3 Zadejte prvky b21: -9 Zadejte prvky b22: 0 Zadejte prvky b31: 0 Zadejte prvky b32: 4 Výstupní matice: 24 29 6 25

V tomto programu je uživatel nejprve vyzván k zadání velikosti dvou matic.

Sloupec první matice by se měl pro násobení rovnat řádku druhé matice. Pokud tato podmínka není splněna, pak je velikost matice opět vyžádána pomocí while smyčky.

Poté je uživatel vyzván k zadání dvou matic a nakonec je vypočítán a zobrazen výstup dvou matic.

Vzhledem k tomu, že program je dlouhý a obtížně laditelný, je lepší tento program vyřešit jeho předáním funkci.

Na této stránce se dozvíte o vynásobení matic předáním polí funkci.

Zajímavé články...