![]() |
Mòdul
5
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Pràctica
d'ampliació ![]() ![]() |
Producte de matrius
En aquesta pràctica en la què calcularem el producte de dos matrius entrades pel teclat, aprendrem a fer servir les variables indexades multidimensionals (matrius).
|
||||||
![]() |
Desenvolupament de la pràctica
Aquest programa calcularà el producte de dues matrius. Si tenim dues matrius A i B, la primera de n files i m columnes, i la segona de m files i p columnes (fixeu-vos que és necessari que el nombre de columnes de la primera matriu ha de coincidir amb el nombre de files de la segona matriu), el producte d'aquestes dues matrius es defineix com una matriu R de n files i p columnes (tantes files com la primera matriu i tantes columnes com la segona), on cada element es calcula amb la següent expressió: rij=ai0b0j+ai1b1j+...+ai(m-1)b(m-1)j El producte de matrius és una operació bàsica i molt important que té un important nombre d'aplicacions. Definiu un projecte nou anomenat m5p06 i afegiu-li un arxiu de font C/C++ anomenat m5p06.cpp. Escriviu el següent codi:
El primer que podem observar en aquest programa és la definició de les macros MAX_FILES i MAX_COLUMNES, ambdues amb el valor 10. És una bona pràctica definir aquests tipus de macros per tal de poder modificar ràpidament el codi en cas que necessitem augmentar o disminuir la mida de les matrius. Es defineixen tres matrius de dues dimensions anomenades a, b, i r. Les dos primeres contindran les matrius que volem multiplicar i l'última el resultat del producte. És interessant observar que la tercera matriu és inicialitzada a 0 d'aquesta forma:
No és necessari escriure més que un 0. A continuació es demana a l'usuari el nombre de files i columnes de la primera matriu, així com el nombre de columnes de la segona matriu. El nombre de files de la segona matriu no es demana, ja que coincideix amb el nombre de columnes de la primera matriu. Després hi ha dos dobles bucles que serveixen per omplir els valors dels elements de les dues matrius. El càlcul del producte es fa amb el següent triple bucle:
La part marcada correspon realment al càlcul de l'element rij.
|