Ďalej program porovnáva rozmery jednotlivých matíc a zisťuje či sú totožné, aby mohol vykonať ich sčítanie a odčítanie. Keď sa matice zhodujú rozmermi vykoná dané operácie a vypíše ich výsledky na monitor. V opačnom prípade vypíše, že matice sa nedajú sčítať a odčítať, lebo nemajú rovnaké rozmery.
Ďalšou časťou programu je zisťovanie či sa dané matice dajú násobyť a to tak že porovnáme počet stĺpcov 1.matice s počtom riadkou 2. matice. Ak sa zhodujú, program matice vynásobý a výsledok vypíše na monitor. V opačnom prípade zahlási chybu o nemožnosti násobenia daných matíc. Medzi jednotlivými výpismi matíc a hlásení je „brzda“ z dôvodu: ak narábame s maticami väčších rozmerov, tak sa celý výpočet matíc nezmestí na monitor.
Návrh:
Štyri operácie nad maticami sú riešené pomocou funkcií. Sú to načítanie matice, vynásobenie matice (matíc), výpis matice (matíc) a vymazanie matice. Všetky funkcie sú tvorené vnorenými cyklami, ktoré zabezpečujú „behanie“ po matici ako aj po riadkoch a vďaka druhému vnorenému cyklu tak aj po stĺpcoch v jednotlivom riadku. Pri násobení je použité trojité vnorenie cyklov a to tak že prvé dva sú for ako aj pri ostatných operáciach a tretí je while, vďaka ktorému sa v 1. matici pohybujeme postĺpcoch a v 2. matici po riadkoch. Sčítanie a odčítanie je riešené pomocou cyklov priamo v tele programu z toho dôvodu aby bola celková dĺžka programu kratšia. Zisťovanie, či sa matice dajú sčítavať a odčítavať, poprípade násobiť je robené pomocou podmienok if.
Implementácia:
#include
#include
#include
#define MAX 10
void nacitajmaticu( int a[MAX][MAX], int m, int n, FILE *matice);
void vynasobmaticu(int e[MAX][MAX],int a[MAX][MAX],int b[MAX][MAX], int m,int n,int k);
void vypismaticu(int a[MAX][MAX], int m,int n);
void nacitajmaticu(int a[MAX][MAX], int m, int n, FILE *matice)
{
int i, j;
for (i=0;i
Zaujímavosti o referátoch
Ďaľšie referáty z kategórie