Così dovrebbe andare... provalo.codice:#include <stdio.h> #include <stdlib.h> void Inserisci (int *r,int *c) { printf ("Inserisci il numero delle righe della matrice:\n"); scanf ("%d",r); printf ("Inserisci il numero delle colonne della matrice:\n"); scanf ("%d",c); } char controllo (int r1, int r2, int c1, int c2) { if(r1==r2 && c1==c2) return 0; return 1; } int main() { int r1; int c1; int r2; int c2; int i,j; int **mat1; int **mat2; int **mat3; char sw=1; /* loop infinito */ while(sw) { printf ("Prima matrice!\n"); Inserisci (&r1,&c1); printf ("Seconda matrice!\n"); Inserisci (&r2,&c2); sw = controllo (r1,r2,c1,c2); }; mat1 = (int **) malloc(r1 * sizeof(int *)); mat2 = (int **) malloc(r2 * sizeof(int *)); mat3 = (int **) malloc(r1 * sizeof(int *)); for (i=0;i<r1;i++) { mat1[i] = (int *) malloc(c1 * sizeof(int)); mat2[i] = (int *) malloc(c2 * sizeof(int)); mat3[i] = (int *) malloc(c1 * sizeof(int)); } printf ("Inserisci gli elementi della prima matrice:\n"); for (i=0;i<r1;i++) for (j=0;j<c1;j++) scanf ("%d",&mat1[i][j]); printf ("La prima matrice e':\n\a"); for (i=0;i<r1;i++) { for (j=0;j<c1;j++) printf ("%d\t",mat1[i][j]); printf ("\n"); } printf ("Inserisci gli elementi della seconda matrice:\n"); for (i=0;i<r2;i++) for (j=0;j<c2;j++) scanf ("%d",&mat2[i][j]); printf ("La seconda matrice e':\n\a"); for (i=0;i<r2;i++) { for (j=0;j<c2;j++) printf ("%d\t",mat2[i][j]); printf ("\n"); } for (i=0;i<r1;i++) for (j=0;j<c1;j++) mat3[i][j] = mat1[i][j] + mat2[i][j]; printf ("La matrice somma delle matrici inserite e':\n\a"); for (i=0;i<r1;i++) { for (j=0;j<c1;j++) printf ("%d\t",mat3[i][j]); printf ("\n"); } while(getchar()!='\n') ; printf("premi un tasto per uscire"); getchar(); return 0; }
p.s. la prossima volta sei pregato di INDENTARE il codice (altrimenti è praticamente impossibile capire il flusso del programma (con tutti quei cicli FOR) )
per indentare il codice basta inserirlo tra i tag [CODE*]codice programma[/CODE*] senza mettere l'asterisco!!!

) )
Rispondi quotando