Ciao a tutti. Sono novella nella programmazione in c. vorrei capire meglio come usare i prototipi e le chiamate di funzioni. Vi posto un programma che ho provato a scrivere io sul prodotto tra matrici. Sapreste indicarmi come è meglio scrivere prototipi e chiamate di funzioni? Ringrazio chi risponderà.
#include <stdio.h>
/*Costanti*/
#define SIZE 10
/*Prototipi*/
void caricaMatrice(int matrice[][SIZE], int r, int c);
void stampaMatrice(int matrice[][SIZE], int r, int c, int n);
int prodotto(int matrice1[][SIZE], int matrice2[][SIZE], int r1, int c1, int r2, int c2);
/*Funzione main*/
int main()
{
int matrice1[SIZE][SIZE], matrice2[SIZE][SIZE], matrice3[SIZE][SIZE];
int r1,r2,c1,c2,i,j;
/*Acquisizione numero righe/colonne matrici*/
do{
do //Controlli per verificare che non sfori o che le r/c siano maggiori di 0
{
printf("N righe prima matrice: \n");
scanf("%d", &r1);
}
while((r1>SIZE)||(r1<=0));
do
{
printf("N colonne prima matrice: \n");
scanf("%d", &c1);
}
while((c1>SIZE)||(c1<=0));
do
{
printf("N righe seconda matrice: \n");
scanf("%d", &r2);
}
while((r2>SIZE)||(r2<=0));
do
{
printf("N colonne seconda matrice: \n");
scanf("%d", &c2);
}
while((c2>SIZE)||(c2<=0));
}while(c1!=r2);
/*Caricamento Matrici*/
printf("Caricamento prima matrice:\n");
caricaMatrice(matrice1, r1, c1);
printf("\nCaricamento seconda matrice:\n");
caricaMatrice(matrice2, r2, c2);
/*Stampa delle Matrici*/
printf("Stampa prima matrice:\n");
stampaMatrice(matrice1, r1, c1, 1);
printf("\nStampa seconda matrice:\n");
stampaMatrice(matrice2, r2, c2, 2);
prodotto(matrice1,matrice2,r1,c1,r2,c2);
return 0;
}
void caricaMatrice(int matrice[][SIZE], int r, int c)
{
int i, h;
for(i=0;i<r;i++)
{
for(h=0;h<c;h++)
{
printf("Inserisci il valore nella posizione matrice[%d][%d] :\t",i,h);
scanf("%d", &matrice[i][h]);
}
}
}
void stampaMatrice(int matrice[][SIZE], int r, int c, int n)
{
//n corrisponde al numero della matrice, serve per la stampa es: matrice1....2
int i, h, r1=0, c1; //c1 ed r1 servono per le stampe ma non sono obbligatorie volendo stampare solo il risultato
printf("La matrice%d e': \n",n);
for(i=0; i<r; i++)
{for(h=0;h<c;h++)
{printf("%d", matrice[i][h]);
}
printf("\n");
}
}
int prodotto(int matrice1[][SIZE], int matrice2[][SIZE], int r1, int c1, int r2, int c2)
{int matrice3[SIZE][SIZE];
int i,j,somma,h;
for(i=0;i<r1;i++);
{for(j=0;j<c2;j++)
{somma=0;
for(h=0;h<c1;h++)
{somma=somma+matrice1[i][h]*matrice2[h][j];
matrice3[i][j]=somma;
}
}
}
printf("La matrice prodotto e': \n");
for(i=0; i<r1; i++)
{for(j=0;j<c2;j++)
{printf("%d", matrice3[i][j]);
}
printf("\n");
}
}