fork download
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #define MAXSTAN 3
  4.  
  5. int sprawdzczywygral(short int tab[MAXSTAN][MAXSTAN]);
  6. int sprawdzczyremis(short int tab[MAXSTAN][MAXSTAN]);
  7. int rekurencja(short int tab[MAXSTAN][MAXSTAN]);
  8. bool czymozesz_zapis(short int klawisz, short int wybor, short int tab[MAXSTAN][MAXSTAN]);
  9.  
  10. int main(void)
  11. {
  12. short int tab[MAXSTAN][MAXSTAN];
  13. tab[0][0]=2; tab[0][1]=5; tab[0][2]=2; tab[1][0]=1; tab[1][1]=6; tab[1][2]=9; tab[2][0]=2; tab[2][1]=2; tab[2][2]=8;
  14. printf("%i\n", rekurencja(tab));
  15. return 0;
  16. }
  17.  
  18. int rekurencja(short int tab[MAXSTAN][MAXSTAN])
  19. {
  20. int wygral=sprawdzczywygral(tab); int remis=sprawdzczyremis(tab); int i=1;
  21. if(wygral!=0) return wygral;
  22. if(remis!=1) return remis;
  23. for(i=1; i<10; i++)
  24. {
  25.  
  26. }
  27. return 5;
  28. }
  29.  
  30. /*sprawdza czy 1 - kolko wygralo, jesli tak zwraca wartosc ujemna, jesli wygralo 2 zwraca wartosc dodatnia*/
  31. int sprawdzczywygral(short int tab[MAXSTAN][MAXSTAN])
  32. {
  33. int i,j;
  34. for(i=0; i<(MAXSTAN); i++)
  35. for(j=1; j<(MAXSTAN); j++)
  36. {
  37. /*Sprawdzenie po wierszach i kolumnach, czy ktos wygral*/
  38. if((tab[i][0]==j)&&(tab[i][1]==j)&&(tab[i][2]==j)) return (j==1)?-1:1;
  39. if((tab[0][i]==j)&&(tab[1][i]==j)&&(tab[2][i]==j)) return (j==1)?-1:1;
  40. }
  41. /*Sprawdzenie po przekatnych, czy ktos wygral*/
  42. if((tab[0][0]==j)&&(tab[1][1]==j)&&(tab[2][2]==j)) return (j==1)?-1:1;
  43. if((tab[2][0]==j)&&(tab[1][1]==j)&&(tab[0][2]==j)) return (j==1)?-1:1;
  44. return 0; /*Jesli nikt nie wygral zwroc 0*/
  45. }
  46.  
  47. int sprawdzczyremis(short int tab[MAXSTAN][MAXSTAN])
  48. {
  49. int i=0; int j=0;
  50. while(j<(MAXSTAN+1)) /*jeśli licznik, wyszedł poza największą liczbę kolumn+1 pętla ma się przerwać ponieważ, została już sprawdzona cała tablica*/
  51. {
  52. if(tab[i][j]==0) return 1; /*pętla sprawdza, po wierszach, czy jest 0 w tablicy*/
  53. ++i;
  54. if(i==(MAXSTAN+1)) {i=0; ++j;} /*jeśli licznik wyszedł poza największą liczbę wierszy+1, licznik ma się wyzerować i dodać do liczby kolumn*/
  55. }
  56. /*funkcja zwróci 0, wyłącznie wtedy kiedy w tablicy już nie ma wartości zero. Czyli miejsca gdzie można postawić figurę lub liczbę*/
  57. return 0;
  58. }
  59.  
  60. /*ZNAJDUJE SIE W CI.c*/
  61. bool czymozesz_zapis(short int klawisz, short int wybor, short int tab[MAXSTAN][MAXSTAN])
  62. {
  63. switch(klawisz)
  64. {
  65. case 55: if(tab[0][0]==0) { tab[0][0]=(wybor==49)?1:2; return 0; } else return 1; break;
  66. case 56: if(tab[0][1]==0) { tab[0][1]=(wybor==49)?1:2; return 0; } else return 1; break;
  67. case 57: if(tab[0][2]==0) { tab[0][2]=(wybor==49)?1:2; return 0; } else return 1; break;
  68. case 52: if(tab[1][0]==0) { tab[1][0]=(wybor==49)?1:2; return 0; } else return 1; break;
  69. case 53: if(tab[1][1]==0) { tab[1][1]=(wybor==49)?1:2; return 0; } else return 1; break;
  70. case 54: if(tab[1][2]==0) { tab[1][2]=(wybor==49)?1:2; return 0; } else return 1; break;
  71. case 49: if(tab[2][0]==0) { tab[2][0]=(wybor==49)?1:2; return 0; } else return 1; break;
  72. case 50: if(tab[2][1]==0) { tab[2][1]=(wybor==49)?1:2; return 0; } else return 1; break;
  73. case 51: if(tab[2][2]==0) { tab[2][2]=(wybor==49)?1:2; return 0; } else return 1; break;
  74. default: return 1;
  75. }
  76. return 1;
  77. }
Success #stdin #stdout 0s 2248KB
stdin
Standard input is empty
stdout
5