Salve, sono nuovo nel forum quindi scusate se sbaglio qualcosa nel format.
Quest'anno all'università abbiamo iniziato ad usare il C, ed il professore ci ha assegnato come esercizio di scrivere il prototipo di una funzione che moltiplichi tra di loro due matrici di interi. Nel programma che ho scritto io (che è il seguente), viene fatto tutto nel main(), mentre il professore vuole che ci sia proprio una funzione a cui dare in input le matrici. Qualcuno può aiutarmi? (So ad esempio che in C non esiste una funzione che restituisca un array di interi, e venendo da Java questo mi crea non poche complicazioni!). Grazie in anticipo!
codice:
#include <stdio.h>
int main()
{
int m = 0; //Righe prima matrice
int n = 0; //Colonne seconda matrice
int p = 0; //Righe prima matrice
int q = 0; //colonne seconda matrice
//Inserimento prima matrice
printf("Inserire numero di righe della prima matrice:\n");
scanf("%d", &m);
printf("Inserire numero di colonne della prima matrice:\n");
scanf("%d", &n);
int matrice1[m][n];
printf("Inserire gli elementi della matrice:\n");
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
scanf("%d", &matrice1[i][j]);
//Inserimento seconda matrice
printf("Inserire numero di righe della seconda matrice:\n");
scanf("%d", &p);
printf("Inserire numero di colonne della seconda matrice:\n");
scanf("%d", &q);
if (n != p)
printf("Non è possibile effettuare la moltiplicazione, arrivederci!\n");
else
{
int matrice2[p][q];
printf("Inserire gli elementi della seconda matrice:\n");
for (int i = 0; i < p; i++)
for (int j = 0; j < q; j++)
scanf("%d", &matrice2[i][j]);
//Calcolo matrice prodotto
int risultato[m][q];
for (int i = 0; i < m; i++) {
int somma = 0;
for (int j = 0; j < q; j++) {
for (int k = 0; k < p; k++) {
somma += matrice1[i][k]*matrice2[k][j];
}
risultato[i][j] = somma;
}
}
//Output matrice 1
printf("Matrice 1:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++)
printf("%d " , matrice1[i][j]);
printf("\n");
}
printf("\n");
//Output matrice 2
printf("Matrice 2:\n");
for (int i = 0; i < p; i++) {
for (int j = 0; j < q; j++)
printf("%d " , matrice2[i][j]);
printf("\n");
}
printf("\n");
//Output matrice prodotto
printf("Matrice prodotto:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < q; j++)
printf("%d ", risultato[i][j]);
printf("\n");
}
}
}