codice:
#include <stdio.h>
#define SIZE 2
int main() {
int m[SIZE][SIZE];
int i,j,k;
printf("enter any integer between 1 and 21");
for (i=0;i<SIZE;i++) {
for (j=0;j<SIZE;j++) {
printf("/>");
scanf("%d",&k);
while(k<1||k>21){
printf ("your value is not correct\n\n enter any integer between 1 and 21 ");
printf ("/>");
scanf("%d",&k);
}
m[i][j]=k;
}
}
for (i=0;i<SIZE;i++)
for (j=0;j<SIZE;j++)
printf("%d ", m[i][j]);
system ("PAUSE");
return 0;
}
In pratica arricchisci una matrice bidimensionale e la stampi a video... il tuo problema è che l'istruzione di assegnamento m[i][j]=k; stava dentro il ciclo while di controllo, quindi arricchiva il vettore solo nel caso i valori venissero digitati errati la prima volta... diciamo che andava anche bene metterla all'interno del ciclo, però l'importante è che ci fosse (anche) fuori da quest'ultimo per il motivo sopracitato.
Secondo errore la stampa dei valori a video... i due indici devono andare da 0 a <SIZE, non <=
I vettori sono sì di due elementi, ma il loro conteggio parte da 0, quindi 0 e 1, due elementi in tutto.
Mi sono spiegato bene?
edit: ah, magari se usassi un'indentazione decente ci capiresti qualcosa in più tu stesso...