leomeya
02-04-2004, 18:35
programma che alloca dinamicamente 2 matrici e ne fa la matrice somma delle 2!
se inserisco un numero di righe maggiore del numero di colonne non funziona mentre al contrario funziona perche'?
#include <stdio.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);
}
void main()
{
int r1;
int c1;
int r2;
int c2;
int i,j;
int** mat1;
int** mat2;
int** mat3;
do
{
printf ("Prima matrice!\n");
Inserisci (&r1,&c1);
printf ("Seconda matrice!\n");
Inserisci (&r2,&c2);
}
while (r1!=r2 && c1!=c2);
mat1=(int**)malloc(r1*sizeof(int*));
for (i=0;i<c1;i++)
mat1[i]=(int*)malloc(c1*sizeof(int));
mat2=(int**)malloc(r2*sizeof (int*));
for (i=0;i<c2;i++)
mat2[i]=(int*)malloc(c2*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 ",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 ",mat2[i][j]);
printf ("\n");
}
mat3=(int**)malloc(r1*sizeof (int*));
for (i=0;i<c1;i++)
mat3[i]=(int*)malloc(c1*sizeof (int));
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 ",mat3[i][j]);
printf ("\n");
}
getch();
}
se inserisco un numero di righe maggiore del numero di colonne non funziona mentre al contrario funziona perche'?
#include <stdio.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);
}
void main()
{
int r1;
int c1;
int r2;
int c2;
int i,j;
int** mat1;
int** mat2;
int** mat3;
do
{
printf ("Prima matrice!\n");
Inserisci (&r1,&c1);
printf ("Seconda matrice!\n");
Inserisci (&r2,&c2);
}
while (r1!=r2 && c1!=c2);
mat1=(int**)malloc(r1*sizeof(int*));
for (i=0;i<c1;i++)
mat1[i]=(int*)malloc(c1*sizeof(int));
mat2=(int**)malloc(r2*sizeof (int*));
for (i=0;i<c2;i++)
mat2[i]=(int*)malloc(c2*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 ",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 ",mat2[i][j]);
printf ("\n");
}
mat3=(int**)malloc(r1*sizeof (int*));
for (i=0;i<c1;i++)
mat3[i]=(int*)malloc(c1*sizeof (int));
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 ",mat3[i][j]);
printf ("\n");
}
getch();
}