fork download
  1. #include <iostream>
  2. #include <functional>
  3. #include <map>
  4. #include <string>
  5. #include <vector>
  6. #include <iomanip>
  7. using namespace std;
  8.  
  9. string liczba_na_pkn(int w);
  10. void sprawdz_wynik(int gracz, int komputer);
  11.  
  12. int main()
  13. {
  14. string typ{};
  15. const int k{ 0 }, p{ 1 }, n{ 2 };
  16. int magiczna_liczba{};
  17. vector<int> gra{ k, k, p, p, n, p, n, k, k, p, k, p, p, n, p, k, n, k, n, k, p, k, p, n };
  18. cout << "Napisz losową dodatnią liczbę całkowitą " << endl;
  19. cin >> magiczna_liczba;
  20. cout << endl << "PKM" << endl << endl << "> ";
  21. while (cin >> typ)
  22. {
  23. string typ_komputera = liczba_na_pkn(gra[magiczna_liczba%gra.size()]);
  24. int typ_gracza = [](string w)->int{if (w == "k")return 0; if (w == "p")return 1; if (w == "n")return 2; return 4; }(typ);
  25. switch (typ_gracza)
  26. {
  27. case 0:
  28. cout << typ << " przeciwko " << typ_komputera << endl;
  29. sprawdz_wynik(typ_gracza, gra[magiczna_liczba%gra.size()]);
  30. ++magiczna_liczba;
  31. break;
  32. case 1:
  33. cout << typ << " przeciwko " << typ_komputera << endl;
  34. sprawdz_wynik(typ_gracza, gra[magiczna_liczba%gra.size()]);
  35. ++magiczna_liczba;
  36. break;
  37. case 2:
  38. cout << typ << " przeciwko " << typ_komputera << endl;
  39. sprawdz_wynik(typ_gracza, gra[magiczna_liczba%gra.size()]);
  40. ++magiczna_liczba;
  41. break;
  42. default:
  43. cout << "Dozwolone typy: k, p, n" << endl;
  44. }
  45. cout << endl;
  46. cout << "> ";
  47. }
  48. }
  49.  
  50. string liczba_na_pkn(int w)
  51. {
  52. switch (w)
  53. {
  54. case 0: return "k";
  55. case 1: return "p";
  56. case 2: return "n";
  57. }
  58. return "błąd";
  59. }
  60.  
  61. void sprawdz_wynik(int gracz, int komputer)
  62. {
  63. if (gracz == komputer)
  64. cout << "remis" << endl;
  65. else if ((gracz + 2) % 3 == komputer)
  66. cout << "gracz wygrywa" << endl;
  67. else
  68. cout << "komputer wygrywa" << endl;
  69. return;
  70. }
Success #stdin #stdout 0s 3464KB
stdin
2323 p p p k k n n p k d d a
stdout
Napisz losową dodatnią liczbę całkowitą 

PKM

> p przeciwko k
gracz wygrywa

> p przeciwko p
remis

> p przeciwko k
gracz wygrywa

> k przeciwko p
komputer wygrywa

> k przeciwko n
gracz wygrywa

> n przeciwko k
komputer wygrywa

> n przeciwko k
komputer wygrywa

> p przeciwko p
remis

> k przeciwko p
komputer wygrywa

> Dozwolone typy: k, p, n

> Dozwolone typy: k, p, n

> Dozwolone typy: k, p, n

>