fork download
  1. #include <cstdio>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5.  
  6. void f1(int t){
  7. printf("state 1 [%d]\n",t);
  8. }
  9. void f2(int t){
  10. printf("state 2 [%d]\n",t);
  11. }
  12. void f3(int t){
  13. printf("state 3 [%d]\n",t);
  14. }
  15. void f4(int t){
  16. printf("state 4 [%d]\n",t);
  17. }
  18.  
  19. int main()
  20. {
  21. printf("vvodi 0/1\n");
  22.  
  23.  
  24. using fun=void (*)(int);
  25. // typedef void(*fun)(int); <-- можно это использовать
  26. // А ещё есть тормозной std::function<void(int)>
  27. fun f[4]={&f1,f2,&f3,f4};
  28. int perh[4][2]={{1,0},{2,3},{0,3},{1,0}};
  29.  
  30.  
  31. char o;
  32. int mememe=0,u=1;
  33. (*f[mememe])(u);
  34. while (cin>>o){
  35. if (o=='2' or o=='1'){
  36. u++;
  37. mememe=perh[mememe][o-'1'];
  38. f[mememe](u);
  39. }
  40.  
  41. }
  42.  
  43. }
  44.  
Success #stdin #stdout 0s 4404KB
stdin
2
2
1
2
1
2
2
1
2
1
stdout
vvodi 0/1
state 1   [1]
state 1   [2]
state 1   [3]
state 2   [4]
state 4   [5]
state 2   [6]
state 4   [7]
state 1   [8]
state 2   [9]
state 4   [10]
state 2   [11]