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;
}
Così dovrebbe andare... provalo.
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!!!