fork download
  1. #include <stdio.h>// Header
  2. #include <stdlib.h>// rand() for random value
  3. #include <time.h>//it is to reinforce the rand(), cleartext more "random"
  4. #include <string.h>
  5. //-----------------------------------------------------------------------------------------------
  6. int generate(int x, int y);
  7. int isvalueinarrayBlock(int x, int y, int wert);
  8. int isvalueinarrayYAxis(int x, int wert);
  9. int isvalueinarrayXAxis(int y, int wert);
  10. int check(int x, int y, int wert);
  11.  
  12. //------------------------------------------------------------------------------------------------
  13. #define SIZE_OF_THE_FIELD 9 //
  14. #define ZAHLFELD_SIZE SIZE_OF_THE_FIELD + 1
  15. //------------------------------------------------------------------------------------------------
  16. #define FALSE 0
  17. #define TRUE 1
  18. //------------------------------------------------------------------------------------------------
  19. static int int2DimesionArraySudokufield[SIZE_OF_THE_FIELD][SIZE_OF_THE_FIELD];
  20. char string2DimesionArraySudokufield[9][9] =
  21. { 0 };
  22. char firstString[ZAHLFELD_SIZE];
  23. char stringZahlenraum[ZAHLFELD_SIZE]={'1','2','3','4','5','6','7','8','9','\0'};
  24.  
  25.  
  26.  
  27. int isvalueinarrayYAxis(int x, int wert)
  28. {
  29. int i;
  30. for (i = 0; i < SIZE_OF_THE_FIELD; i++)
  31. {
  32. if (int2DimesionArraySudokufield[i][x] == wert)
  33. {
  34. //return TRUE;
  35. }
  36. }
  37. return FALSE;
  38. }
  39. int isvalueinarrayXAxis(int y, int wert)
  40. {
  41. int i;
  42. for (i = 0; i < SIZE_OF_THE_FIELD; i++)
  43. {
  44. if (int2DimesionArraySudokufield[y][i] == wert)
  45. {
  46. //return TRUE;
  47. }
  48. }
  49. return FALSE;
  50. }
  51. int isvalueinarrayBlock(int x, int y, int wert)
  52. {
  53. int x_box, y_box, i, j;
  54.  
  55. x_box = (int) (x / 3) * 3;
  56. y_box = (int) (y / 3) * 3;
  57. for (i = y_box; i < y_box + 3; i++)
  58. {
  59. for (j = x_box; j < x_box + 3; j++)
  60. {
  61. if (int2DimesionArraySudokufield[i][j] == wert)
  62. {
  63. //return TRUE;
  64. }
  65. }
  66. }
  67. return FALSE;
  68. }
  69. int check(int x, int y, int wert)
  70. {
  71. if (isvalueinarrayXAxis(x, wert)){}
  72. //return FALSE;
  73. if (isvalueinarrayYAxis(y, wert)){}
  74. //return FALSE;
  75. if (isvalueinarrayBlock(x, y, wert)){}
  76. //return FALSE;
  77. return FALSE;
  78. }
  79. int generate(int x, int y)
  80. {
  81. int intRandomValue;
  82. int random;
  83. random =(sizeof(stringZahlenraum)/ sizeof(int));
  84. if (x == SIZE_OF_THE_FIELD)
  85. { /* Zeilenende erreicht */
  86. y++;
  87. x = 0;
  88. if (y == SIZE_OF_THE_FIELD) /* Ende erreicht */
  89. return 1;
  90. }
  91.  
  92. intRandomValue = rand() % random + 1;
  93.  
  94.  
  95. if (!check(x, y, stringZahlenraum[intRandomValue]))
  96. {
  97. int2DimesionArraySudokufield[y][x] = intRandomValue;
  98. if (generate(x + 1, y))
  99. {
  100. int i, j;
  101. for (i = 0; i < SIZE_OF_THE_FIELD; i++) //The Loop for line, Y-Axis
  102. {
  103.  
  104. for (j = 0; j < SIZE_OF_THE_FIELD; j++) //The Loop for column, X-Axis
  105. {
  106. string2DimesionArraySudokufield[i][j] = int2DimesionArraySudokufield[i][j];
  107.  
  108. }
  109.  
  110. }
  111. }
  112. char *String;
  113. char *ptr;
  114. ptr= strtok(String, intRandomValue);
  115. strcpy(firstString, ptr);
  116.  
  117. for (int n = 0; n < strlen(String); ++n)
  118. {
  119. String[n] = String[n + 1];
  120. }
  121.  
  122. strcat(firstString, String);
  123. strcpy(stringZahlenraum,firstString);
  124. random--;
  125. }
  126.  
  127. else
  128. {intRandomValue = rand() % SIZE_OF_THE_FIELD + 1;}
  129. int2DimesionArraySudokufield[y][x] = 0; /* Keine Zahl hat gepasst, wieder 0 setzen */
  130. return FALSE;
  131. }
  132. int main(void)
  133. {
  134. int intExitcode = 0;
  135. int i = 0, j = 0;
  136. for (i = 0; i < SIZE_OF_THE_FIELD; i++)
  137. {
  138. for (j = 0; j < SIZE_OF_THE_FIELD; j++)
  139. {
  140. int2DimesionArraySudokufield[i][j] = 0;
  141. }
  142. }
  143.  
  144. srand(time(0));
  145. generate(0, 0);
  146. // char stringCopyFirst[1][9];
  147. // int x = 0;
  148. // while (x < 9)
  149. // {
  150. // strchr(string2DimesionArraySudokufield, x);
  151. //
  152. // for (int i = 0; i < 9; i++)
  153. // {
  154. // strcpy(stringCopyFirst[0][i], string2DimesionArraySudokufield[x][i]);
  155. //
  156. //
  157. //
  158. // }
  159. //
  160. // strtok(stringCopyFirst,x);
  161. //
  162. //
  163. //
  164. //
  165. //
  166. // x++;
  167. // }
  168.  
  169. for (i = 0; i < SIZE_OF_THE_FIELD; i++) //The Loop for line, Y-Axis
  170. {
  171.  
  172. for (j = 0; j < SIZE_OF_THE_FIELD; j++) //The Loop for column, X-Axis
  173. {
  174. printf("%d", string2DimesionArraySudokufield[i][j]);
  175. if (j == 2 || j == 5 || j == 8)
  176. {
  177. printf("\t");
  178. }
  179.  
  180. }
  181. printf("\n");
  182. if (i == 2 || i == 5 || i == 8)
  183. {
  184. printf("\n");
  185. }
  186.  
  187. }
  188.  
  189. return intExitcode; // THE END
  190. }
  191.  
  192.  
  193.  
Runtime error #stdin #stdout 0s 2164KB
stdin
Standard input is empty
stdout
Standard output is empty