fork(2) download
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4. #include <functional>
  5. using namespace std;
  6.  
  7. #define program(x) int main(
  8. #define staly const
  9. #define i ,
  10. #define oraz i
  11. #define zawiera = {
  12. #define wystarczy }
  13. #define pare(x) { x }
  14. #define jezeli if(
  15. #define to ){
  16. #define inaczej } else {
  17. #define posiada(x) .count(x)
  18. #define funkcja auto
  19. #define zwraca(x) -> x {
  20. #define robi {
  21. #define zwroc return
  22. #define dopoki while(
  23. #define rob ){
  24. #define alias_funkcji(nazwa, nowa) const auto & nowa = nazwa
  25.  
  26. #define wartosc_slownika(slownik, klucz) slownik.at(klucz)
  27.  
  28. namespace /* odmiana */{
  29. using napis = string;
  30. using napisow = napis;
  31. }
  32.  
  33. namespace /* odmiana */{
  34. using liczba = int;
  35. using liczb = liczba;
  36. using liczbe = liczba;
  37. }
  38.  
  39. namespace /* odmiana */{
  40. using znak = char;
  41. using znakow = znak;
  42. }
  43.  
  44. auto &pobierz = cin;
  45. auto &wypisz = cout;
  46. auto koniec_linii = '\n';
  47.  
  48. template<typename Klucz, typename Wartosc>
  49. using slownik = map<Klucz, Wartosc>;
  50.  
  51. using func_int_int_int = function<int(int, int)>;
  52.  
  53. namespace /* odmiana */{
  54. using akcja = func_int_int_int;
  55. using akcji = akcja;
  56. }
  57.  
  58. //...
  59. funkcja potega(liczba podstawa, liczba wykladnik) zwraca(liczbe)
  60. liczba ile_razy = wykladnik;
  61. liczba akumulator = podstawa;
  62. dopoki ile_razy --> 1 rob
  63. akumulator *= podstawa;
  64. wystarczy;
  65.  
  66. zwroc akumulator;
  67. wystarczy;
  68.  
  69. alias_funkcji(potega, potege);
  70.  
  71.  
  72. program("N-ty kalkulatorek na forum") to
  73. staly slownik<znakow i akcji> slownik_akcji zawiera
  74. pare('+' i [](liczba a oraz
  75. liczba b){ zwroc a + b; }),
  76. pare('-' i [](liczba a oraz
  77. liczba b){ zwroc a - b; }),
  78. pare('^' i [](liczba a oraz
  79. liczba b){ zwroc potege(a, b); })
  80. wystarczy;
  81.  
  82. liczba a, b;
  83. znak decyzja;
  84.  
  85. wypisz << "podaj [a] [znak] [b]: " << koniec_linii;
  86. pobierz >> a >> decyzja >> b;
  87.  
  88. liczba wynik = wartosc_slownika(slownik_akcji, decyzja)(a, b);
  89.  
  90. wypisz << a << " " << decyzja << " " << b << " = " << wynik << koniec_linii;
  91. wystarczy;
Success #stdin #stdout 0s 3420KB
stdin
5 ^ 3
stdout
podaj [a] [znak] [b]: 
5 ^ 3 = 125