ok... righe e colonne me le posso tirare fuori perché le conosco a priori.
Le ho dichiarate anzitempo con due scanf: una per la matrice A e l'altra per la matrice B.
La funzione che genera le matrici è quella suggeritami da Oregon.
Per stampare ho provato la seguente funzione:
void stampa (**p, a, b){ //p è il puntatore della matrice generata, a e b sono le dimensioni;
int i,j;
for (i=0;i<a;i++)
for (j=0;j<c;j++)
printf("%2d ",p[i][j])
}
A video però mi dà dei numeri assurdi... che dipenda dalla funzione "crea"? Ora provo a postare il listato:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int **creamatrice(int a, int b) {
int i,j;
srand(time(NULL));
int **p = (int **)malloc(a * sizeof(int *));
if (!p) exit(1);
else {
for (i=0;i<a;i++){
*(p+i) = (int *)malloc(b * sizeof(int));
if(!(p+i)) exit(1);
}
}
for (i=0;i<a;i++)
for (j=0;j<b;j++)
p[i][j] = rand()%100;
return (p);
}
void stampa(int **p, int r, int c){
int i,j;
for (i=0;i<r;i++)
for (j=0;j<c;j++)
printf("%2d",p[i][j]);
}
main() {
int ar, br, ac, bc, i,j;
puts ("Matrice A.Quante righe? ");
scanf ("%d", &ar);
puts ("Quante colonne? ");
scanf ("%d", &ac);
puts ("Matrice B.Quante righe? ");
scanf ("%d", &br);
puts ("Quante colonne? ");
scanf ("%d", &bc);
int **A = creamatrice (ar,ac);
int **B = creamatrice (br,bc);
puts ("\nMatrice A:\n");
stampa (A,ar,ac);
puts ("\nMatrice B:\n");
stampa (B,br,bc);
fflush (stdin);
getchar();
}