C random matrix with numbers between 0 and 9 -
i'm c newbie , i'm trying make matrix 5x4 numbers between 0 , 9 each number needs there 2 times (i'm trying make memory game). got code think quite mess , not working, question is, how can improve code or how can make matrix in different way?
#include <stdio.h> #include <math.h> #include <stdlib.h> #define maxc 4 #define maxl 5 int main(){ int n1=0, n2=0, n3=0, n4=0, n5=0, n6=0, n7=0, n8=0, n9=0, n0=0; int i=0,j=0,r; int n[maxl][maxc]; srand(time(null)); while(i<5){ j=0; while(j<4){ r=(rand()%10); if(r==0 && n0<2){ n0++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==1 && n1<2){ n1++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==2 && n2<2){ n2++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==3 && n3<2){ n3++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==4 && n4<2){ n4++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==5 && n5<2){ n5++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==6 && n6<2){ n6++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==7 && n7<2){ n7++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==8 && n8<2){ n8++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } if(r==9 && n9<2){ n9++; j++; n[i][j]=r; printf(" %3d ",n[i][j]); } } i++; } return 0; }
here little change make program shorter.
i've placed n0, n1, .... array indexed r.
#include <stdio.h> #include <stdlib.h> #include <time.h> #define maxc 4 #define maxl 5 int main() { int na[10] = {0}; int n[maxl][maxc], i=0; srand((unsigned)time(null)); while(i<maxl) { int j=0; while(j<maxc) { int r = rand() % 10; if(na[r]<2) { ++na[r]; n[i][j] = r; printf(" %3d ",n[i][j]); ++j; } } ++i; printf("\n"); } return 0; }
example output:
2 6 1 8 4 7 0 2 5 3 7 8 9 1 0 3 5 6 4 9
your code keeps trying random number until have had each number twice. not best approach.
instead initialize matrix 20 numbers @ fix locations , random shuffle of matrix.
Comments
Post a Comment