+Non ha senso passare alla funzione "h" se poi la setti prima del ciclo(a cosa ti serve?)
+"r=A[1];" è giusto, ma "r" non serve nella funzione( variabile in più, C::B dovrebbe dirti qualcosa tipo "var r set but not used")
+"h" aumenta di 2 nel ciclo, perchè gli elem del vettore vanno usati a coppie
+IMPORTANTE: Dato che B è dichiarata in una funzione, e la funzione non ritorna al main alcun riferimento/valore inerente a B, B non può essere "vista" dal main. Come se non fosse mai esistita. Inoltre al termine della funzione viene distrutta(inconveniente evitabile allocandola con malloc(),static, ecc...).
Una possibile soluzione è passare alla funzione una matrice già allocata visibile al main()
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
void matrice(int A[MAX],int B[MAX][MAX], int n);
int main(int args,char **argv)
{
int A[MAX], B[MAX][MAX], n, i, j, h, r, c;
printf(" Digitare numero elementi: ");
scanf("%d", &n);
printf("\n\n");
printf(" Digitare numero righe: ");
scanf("%d",&A[0]);
printf(" Digitare numero colonne: ");
scanf("%d",&A[1]);
printf("\n\nDigitare elementi ");
for(h=2; h<n; h+=2)
{
printf("\n");
printf(" Ripetizioni: ");
scanf("%d", &A[h]);
printf(" Valore: ");
scanf("%d", &A[h+1]);
}
printf("\n\n");
r=A[0];
c=A[1];
matrice(A,B, n);
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
printf("%4d", B[i][j]);
printf("\n");
}
system("pause");
return 0;
}
void matrice(int A[MAX],int B[MAX][MAX], int n)
{
int j, r, c, cnt;
//r=A[0]; //numero di righe //non è sbagliato, ma non serve a questa funzione
c=A[1]; //numero di colonne
cnt=0;
int h;
for(h=2; h<n; h+=2) //A[h+1] e' uguale al secondo num della coppia
{
for(j=0; j<A[h]; j++) //ripete A[h] volte l inserimento di A[h+1]
{
B[cnt/c][cnt%c]=A[h+1]; //inserisce A[h+1] nelle matrice
cnt++; //numero elemento della matrice
}
}
return;
}
O potresti anche far ritornare la matrice ( int** matrice(...) )
O esistono tanti altri metodi... vedi tu.
PS: Se la conosci, potresti usare l'allocazione dinamica per renderlo moolto + stabile e meno dispendioso.