fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define N 9
  6.  
  7. int isValueInLineOrColumn(int val, int arr[N][N], int line, int column)
  8. {
  9. int i,j;
  10.  
  11. for (i=0; i < N; i++)
  12. {
  13. if(arr[line][i] == val)
  14. return 1;
  15.  
  16. if (arr[i][column] == val)
  17. return 1;
  18. }
  19.  
  20. return 0;
  21. }
  22.  
  23. int main()
  24. {
  25. int su[N][N];
  26. int i, j;
  27. int cont;
  28.  
  29. srand( (unsigned)time(NULL) );//evita que o rand seja gerado pelo tempo
  30.  
  31. for(i=0; i<N; i++)
  32. {
  33. for(j=0; j<N; j++)
  34. {
  35. cont=rand()%N;
  36.  
  37. if(i==cont || j==cont)
  38. {
  39.  
  40. int val = 1+rand()%N;
  41.  
  42. //verifica se já existe este valor na linha ou coluna atual.
  43. if(isValueInLineOrColumn(val, su, i, j))
  44. su[i][j]=0;
  45. else
  46. su[i][j]=val;
  47.  
  48. }
  49. else
  50. {
  51. //usando 0 como identificador de vazio
  52. su[i][j]=0;
  53. }
  54. }
  55. }
  56.  
  57. for(i=0; i<N; i++)
  58. {
  59. for(j=0; j<N; j++)
  60. {
  61. if(su[i][j]!=0)
  62. printf("[%i]", su[i][j]);
  63. else
  64. printf("[ ]");//se for igual a 0 coloca o quadrado vazio.
  65. }
  66. printf("\n");
  67. }
  68.  
  69. /*
  70.   for(i=1 ; i <= 10 ; i++)
  71.   printf("Numero %d: %d\n",i, 1+rand()%9);
  72.   */
  73.  
  74.  
  75. return 0;
  76. }
Success #stdin #stdout 0s 2248KB
stdin
Standard input is empty
stdout
[ ][ ][8][ ][ ][ ][ ][ ][ ]
[ ][ ][3][ ][ ][5][ ][8][ ]
[ ][2][ ][6][ ][ ][ ][ ][ ]
[ ][ ][7][ ][ ][ ][ ][ ][ ]
[8][ ][ ][ ][ ][ ][ ][7][ ]
[ ][ ][ ][ ][ ][ ][9][ ][ ]
[ ][ ][ ][ ][3][ ][ ][ ][ ]
[ ][4][ ][ ][ ][ ][ ][ ][ ]
[4][ ][ ][ ][ ][ ][ ][ ][ ]