Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. int tab[21][9];
  5. ofstream plik;
  6.  
  7. void wstawianie(int x, int y);
  8. bool sprawdzenie(int x, int y, int wstawiana);
  9. bool sprawdzenie_pion_i_poziom(int x, int y, int wstawiana); //juz dziala
  10. bool czysajeszczepuste();
  11. void wyswietl();
  12. void zwiekszenie(int x, int y);
  13. bool sudoku(int pierw, int druga);
  14. bool czy_puste(int x, int y, int k)
  15. {
  16. tab[x][y]=0;
  17. if(tab[x][y]==0)
  18. {
  19. tab[x][y]=k;
  20. return true;
  21. }
  22. else{
  23. tab[x][y]=k;
  24. return false;
  25. }
  26. }
  27.  
  28.  
  29. bool trzy_na_trzy( int x, int y, int wstawiana) //dziala
  30. {
  31.  
  32. ////////////////////////////////////////////////////////////////////////////////glupie ify
  33. int opcja=0;
  34. tab[x][y]=0;
  35. bool zmienna;
  36. zmienna=false;
  37.  
  38. if((x>=0 && x<=2) && (y>=0 && y<=2)){
  39. opcja=1;
  40. }
  41.  
  42. else if((x>=3 && x<=5) && (y>=0 && y<=2)){
  43. opcja=4;
  44. }
  45.  
  46. else if((x>=6 && x<=8) && (y>=0 && y<=2)){
  47. opcja=7;
  48. }
  49.  
  50. else if((x>=0 && x<=2) && (y>=3 && y<=5)){
  51. opcja=2;
  52. }
  53.  
  54. else if((x>=3 && x<=5) && (y>=3 && y<=5)){
  55. opcja=5;
  56. }
  57.  
  58.  
  59. else if((x>=6 && x<=8) && (y>=3 && y<=5)){
  60. opcja=8;
  61. }
  62.  
  63. else if((x>=0 && x<=2) && (y>=6 && y<=8)){
  64. opcja=3;
  65. }
  66.  
  67.  
  68. else if((x>=3 && x<=5) && (y>=6 && y<=8)){
  69. opcja=6;
  70. }
  71.  
  72.  
  73. else if((x>=6 && x<=8) && (y>=6 && y<=8)){
  74. opcja=9;
  75. }
  76. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  77.  
  78.  
  79.  
  80.  
  81. {
  82.  
  83. switch(opcja)
  84. {
  85. case 1:
  86. sprawdzenie(0,0, wstawiana);
  87. break;
  88.  
  89. case 2:
  90. zmienna=sprawdzenie(0,3, wstawiana);
  91. break;
  92.  
  93. case 3:
  94. sprawdzenie(0,6, wstawiana);
  95. break;
  96.  
  97. case 4:
  98. sprawdzenie(3,0, wstawiana);
  99. break;
  100.  
  101. case 5:
  102. sprawdzenie(3,3, wstawiana);
  103. break;
  104.  
  105. case 6:
  106. sprawdzenie(3,6, wstawiana);
  107. break;
  108.  
  109. case 7:
  110. sprawdzenie(6,0, wstawiana);
  111. break;
  112.  
  113. case 8:
  114. sprawdzenie(6,3, wstawiana);
  115. break;
  116.  
  117. case 9:
  118. sprawdzenie(6,6, wstawiana);
  119. break;
  120.  
  121.  
  122. }
  123. }
  124. }
  125.  
  126. int main()
  127. {
  128. int zlicz=0, zlicz2=0, wiersz=0, kolumn=0;
  129. ifstream plik_dane;
  130. bool pomoc;
  131. plik_dane.open("dane1.txt");
  132. if(plik_dane.good()==false)
  133. {
  134. cout<<"nie udalo sie otworzyc"<<endl;
  135. }
  136. for(int i=0; i<21; i++)
  137. {
  138. for(int j=0; j<9; j++)
  139. {
  140. plik_dane>>tab[i][j];
  141. }
  142. }
  143.  
  144. plik.open("wynik.txt");
  145.  
  146.  
  147. //////////////////////////////////////////////////////////////////////////////////////////////////////////// wywolanie wszystkich funkcji
  148.  
  149.  
  150. sudoku(0,0);
  151. wyswietl();
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159. //////////////////////////////////////////////////////////////////////////////////////////////////////////
  160.  
  161.  
  162. cout<<zlicz<<endl;
  163. cout<<zlicz2<<endl;
  164.  
  165.  
  166. ////////////////////////////////////////////////////////////////////////////////////////////////////////////
  167. }
  168.  
  169.  
  170. ////////////////////////////////////////////////////////////////////////////////////////////////
  171.  
  172. bool sprawdzenie(int x, int y, int wstawiana)
  173. {
  174. bool wynik_porownania=true;
  175. for(int i=x; i<x+3; i++)
  176. for(int j=y; j<y+3; j++) //sprawdzenie trujek
  177. {
  178. if(tab[i][j]==wstawiana){
  179. wynik_porownania=false;
  180.  
  181. }
  182.  
  183. }
  184. tab[x][y]=wstawiana;
  185. return wynik_porownania;
  186.  
  187. }
  188.  
  189.  
  190. bool sprawdzenie_pion_i_poziom(int x, int y, int wstawiana)
  191. {
  192.  
  193. tab[x][y]=0;
  194. bool zmienna=true, zmienna2=true;
  195. for(int j=0; j<9; j++){
  196. if(tab[x][j]==wstawiana)
  197. {
  198. //to chodzi poziom
  199. zmienna=false;
  200. }
  201. }
  202.  
  203. for(int i=0; i<9; i++)
  204. {
  205. if(tab[i][y]==wstawiana) //to chodzi pion
  206. {
  207. zmienna2=false;
  208. }
  209. }
  210. tab[x][y]=wstawiana;
  211. return zmienna && zmienna2;
  212. }
  213.  
  214.  
  215. bool czysajeszczepuste()
  216. {
  217. for(int i=0; i<9; i++)
  218. {
  219. for(int j=0; j<9; j++)
  220. {
  221. if(tab[i][j]==0)
  222. {
  223. return true;
  224. }
  225. }
  226. }
  227. return false;
  228. }
  229.  
  230.  
  231. bool sudoku(int pierw, int druga)
  232. {
  233. int pomoc1=0, pomoc2=0;
  234. cout<<pierw<<druga<<endl;
  235. if(czysajeszczepuste()==false)
  236. {
  237. return true;
  238. wyswietl();
  239. }
  240. for(int i=1; i<10; i++)
  241. {
  242.  
  243. tab[pierw][druga]=i;
  244. pomoc1=pierw;
  245. pomoc2=druga;
  246. if(trzy_na_trzy(pierw,druga,i) && sprawdzenie_pion_i_poziom(pierw,druga,i) ==true)
  247. {
  248. if(druga==8)
  249. {
  250. pierw=pierw+1;
  251. druga=0;
  252. }
  253. else if(druga<8)
  254. {
  255. druga=druga+1;
  256. }
  257.  
  258.  
  259. if(sudoku(pierw,druga)==true)
  260. {
  261. // cout<<"cypis"<<endl;
  262. return true;
  263.  
  264. }
  265. }
  266. }
  267.  
  268.  
  269. tab[pomoc1][pomoc2]=0;
  270. return false;
  271.  
  272.  
  273.  
  274.  
  275. }
  276.  
  277.  
  278. void wyswietl()
  279. {
  280. for(int i=0; i<9; i++)
  281. {
  282. for(int j=0; j<9; j++)
  283. {
  284. cout<<tab[i][j]<<" ";
  285. plik<<tab[i][j]<<" ";
  286. }
  287. plik<<endl;
  288. cout<<endl;
  289. }
  290. plik<<"\n"<<endl;
  291.  
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement