codice:
#include <stdio.h>
#include <stdlib.h>
void righe_x_colonne (int *a, int *b, int *c, short int m, short int n, short int p);
void matrice (int *a, short int m, short int n);
int main()
{
short m, n, p1, p2;
int *a, *b, *c;
printf("Programmazione II - Esercizio 29\n");
do
{
printf("\nInserisci le dimensioni delle matrici A e B (ricorda le colonne di A uguali alle righe di B)\n\n");
printf("Inserisci il numero di righe della matrice A\n");
scanf("%hd", &m);
printf("Inserisci il numero di colonne della matrice A\n");
scanf("%hd", &p1);
printf("Inserisci il numero di righe della matrice B\n");
scanf("%hd", &p2);
printf("Inserisci il numero di colonne della matrice B\n");
scanf("%hd", &n);
} while (p1 != p2);
a = calloc(m*p1, sizeof(int));
b = calloc(p2*n, sizeof(int));
c = calloc(m*n, sizeof(int));
printf("\nInserisci gli elementi della matrice A[%hd][%hd]\n", m, p1);
matrice(a, m, p1);
printf("\nInserisci gli elementi della matrice B[%hd][%hd]\n", p2, n);
matrice(b, p2, n);
printf("\nMatrice C[%hd][%hd] prodotto di AxB\n", m, n);
righe_x_colonne(a, b, c, m, n, p1);
free(a);
free(b);
free(c);
return 0;
}
void matrice (int *a, short int m, short int n)
{
short int i, j;
int num;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("Inserisci elemento [%hd][%hd] = ", i+1, j+1);
scanf("%d", &num);
*(a + i*n + j) = num;
}
}
}
void righe_x_colonne (int *a, int *b, int *c, short int m, short int n, short int p)
{
int i, j, k;
for(i=0;i<m;i++)
{
printf("\t");
for(j=0;j<n; j++)
{
for(k=0;k<p;k++)
{
*(c + i*n + j) = *(c + i*n + j) + *(a + i*n + k) * *(b + m*k + j);
}
printf("%d ", *(c + i*n + j));
}
printf("\n");
}
}
Ecco a te, ti ringrazio per l'interesse