24.14.2.24011420. Napišite funkciju “MnoziMatrice“ sa 7 parametara “mat1”, “mat2”, “mat3”, “m1”, “n1”, “m2“ i “n2”. Prva tri parametra predstavljaju matrice realnih brojeva maksimalnih dimenzija 20 x 20, dok su “m1”, “n1”, “m2“ i “n2“ stvarne dimenzije matrica “mat1“ i “mat2”. Ukoliko matrice “mat1“ i “mat2“ nisu saglasne za množenje, funkcija treba samo da kao rezultat vrati logičku vrijednost “false”. Međutim, ukoliko matrice “mat1“ i “mat2“ jesu saglasne za množenje, funkcija treba da izračuna produkt matrica “mat1“ i “mat2“ i da rezultat množenja smjesti u matricu “mat3”. Pored toga, funkcija kao rezultat treba da vrati “true” (kao indikaciju uspješno obavljenog množenja). Napisanu funkciju testirajte u programu u kojem će korisnik sa tastature unijeti dvije matrice, nakon čega će biti izračunat i ispisan njihov produkt (ukoliko postoji), odnosno informacija da matrice nisu saglasne za množenje (dozvoljeno je koristiti funkcije “UnesiMatricu“ i “IspisiMatricu“ rađene na auditornim vježbama).

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>

using namespace std;
typedef double matrice[20][20];
bool mnozi_matrice(const matrice mat1,const matrice mat2,matrice mat3,int r1,int k1,int r2,int k2){
if(k1!=r2)return false;
for(int i=0;i<r1;i++){
    for(int p=0;p<k2;p++){
        int s(0);
        for(int j=0;j<k1;j++)s+=mat1[i][j]*mat2[j][p];
        mat3[i][p]=s;
    }
}
return true;
}
int main(){
matrice m1,m2,m3;
for(int i=0;i<3;i++){
    for(int j=0;j<2;j++)cin>>m1[i][j];
    }
for(int i=0;i<2;i++){
    for(int j=0;j<3;j++)cin>>m2[i][j];
    }
if(mnozi_matrice(m1,m2,m3,3,2,2,3)){
cout<<"Yes!\n";
for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
    cout.width(3);
    cout<<m3[i][j];
    }
    cout<<endl;
}
}
else cout<<"No!";
getch();
return 0;
}

Izvođenje programa:

Riješeni zadaci 2    Index