Advertisement
Tomki

Laba1_2 c++

Mar 1st, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.58 KB | None | 0 0
  1. // Laba12.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. class FSM
  10. {
  11. private:
  12.     int state = 1;
  13.     int i = 1;
  14. public:
  15.     bool error = false;
  16.     FSM() {};
  17.     void showState()
  18.     {
  19.         cout << "Current state is : " << state << endl;
  20.     }
  21.     int getState()
  22.     {
  23.         return state;
  24.     }
  25.     void setState(int a)
  26.     {
  27.         state = a;
  28.     }
  29.     void nextState(char c)
  30.     {
  31.         if (isdigit(c))
  32.         {
  33.             switch (getState())
  34.             {
  35.             case 1:
  36.             {
  37.                 if (c >= '3' && c <= '9') setState(2);
  38.                 else
  39.                     if (c == '2') setState(3);
  40.                     else
  41.                         if (c == '0' || c == '1') setState(4);
  42.                 break;
  43.             }
  44.             case 2:
  45.             {
  46.                 if (c >= '0' && c <= '9') setState(5);
  47.                 break;
  48.             }
  49.             case 3:
  50.             {
  51.                 if (c >= '6' && c <= '9') setState(5);
  52.                 else
  53.                     if (c == '5') setState(6);
  54.                     else
  55.                         if (c >= '0' && c <= '4') setState(7);
  56.                 break;
  57.             }
  58.             case 4:
  59.             {
  60.                 if (c >= '0' && c <= '9') setState(8);
  61.                 break;
  62.             }
  63.             case 5:
  64.             {
  65.                 error = true;
  66.                 break;
  67.             }
  68.             case 6:
  69.             {
  70.                 if (c >= '0' && c <= '5') setState(5);
  71.                 else error = true;
  72.                 break;
  73.             }
  74.             case 7:
  75.             {
  76.                 if (c >= '0' && c <= '9') setState(5);
  77.                 break;
  78.             }
  79.             case 8:
  80.             {
  81.                 if (c >= '0' && c <= '9') setState(5);
  82.                 break;
  83.             }
  84.             case 9:
  85.             {
  86.                 if (c >= '3' && c <= '9') setState(10);
  87.                 else
  88.                     if (c == '2') setState(11);
  89.                     else
  90.                         if (c == '0' || c == '1') setState(12);
  91.                 break;
  92.             }
  93.             case 10:
  94.             {
  95.                 if (c >= '0' && c <= '9') setState(13);
  96.                 break;
  97.             }
  98.             case 11:
  99.             {
  100.                 if (c >= '6' && c <= '9') setState(13);
  101.                 else
  102.                     if (c == '5') setState(14);
  103.                     else
  104.                         if (c >= '0' && c <= '4') setState(15);
  105.                 break;
  106.             }
  107.             case 12:
  108.             {
  109.                 if (c >= '0' && c <= '9') setState(16);
  110.                 break;
  111.             }
  112.             case 13:
  113.             {
  114.                 error = true;
  115.                 break;
  116.             }
  117.             case 14:
  118.             {
  119.                 if (c >= '0' && c <= '5') setState(13);
  120.                 else error = true;
  121.                 break;
  122.             }
  123.             case 15:
  124.             {
  125.                 if (c >= '0' && c <= '9') setState(13);
  126.                 break;
  127.             }
  128.             case 16:
  129.             {
  130.                 if (c >= '0' && c <= '9') setState(13);
  131.                 break;
  132.             }
  133.             case 17:
  134.             {
  135.                 if (c >= '3' && c <= '9') setState(18);
  136.                 else
  137.                     if (c == '2') setState(19);
  138.                     else
  139.                         if (c == '0' || c == '1') setState(20);
  140.                 break;
  141.             }
  142.             case 18:
  143.             {
  144.                 if (c >= '0' && c <= '9') setState(21);
  145.                 break;
  146.             }
  147.             case 19:
  148.             {
  149.                 if (c >= '6' && c <= '9') setState(21);
  150.                 else
  151.                     if (c == '5') setState(22);
  152.                     else
  153.                         if (c >= '0' && c <= '4') setState(23);
  154.                 break;
  155.             }
  156.             case 20:
  157.             {
  158.                 if (c >= '0' && c <= '9') setState(24);
  159.                 break;
  160.             }
  161.             case 21:
  162.             {
  163.                 error = true;
  164.                 break;
  165.             }
  166.             case 22:
  167.             {
  168.                 if (c >= '0' && c <= '5') setState(21);
  169.                 else error = true;
  170.                 break;
  171.             }
  172.             case 23:
  173.             {
  174.                 if (c >= '0' && c <= '9') setState(21);
  175.                 break;
  176.             }
  177.             case 24:
  178.             {
  179.                 if (c >= '0' && c <= '9') setState(21);
  180.                 break;
  181.             }
  182.             case 25:
  183.             {
  184.                 if (c >= '3' && c <= '9') setState(26);
  185.                 else
  186.                     if (c == '2') setState(27);
  187.                     else
  188.                         if (c == '0' || c == '1') setState(28);
  189.                 break;
  190.             }
  191.             case 26:
  192.             {
  193.                 if (c >= '0' && c <= '9') setState(29);
  194.                 break;
  195.             }
  196.             case 27:
  197.             {
  198.                 if (c >= '6' && c <= '9') setState(29);
  199.                 else
  200.                     if (c == '5') setState(30);
  201.                     else
  202.                         if (c >= '0' && c <= '4') setState(31);
  203.                 break;
  204.             }
  205.             case 28:
  206.             {
  207.                 if (c >= '0' && c <= '9') setState(32);
  208.                 break;
  209.             }
  210.             case 29:
  211.             {
  212.                 error = true;
  213.                 break;
  214.             }
  215.             case 30:
  216.             {
  217.                 if (c >= '0' && c <= '5') setState(29);
  218.                 else error = true;
  219.                 break;
  220.             }
  221.             case 31:
  222.             {
  223.                 if (c >= '0' && c <= '9') setState(29);
  224.                 break;
  225.             }
  226.             case 32:
  227.             {
  228.                 if (c >= '0' && c <= '9') setState(29);
  229.                 break;
  230.             }
  231.             }
  232.         }
  233.         else
  234.         {
  235.             if (c == '.' && getState() != 1 && getState() < 9)
  236.                 setState(9);
  237.             else
  238.                 if (c == '.' && getState() != 9 && getState() < 17)
  239.                     setState(17);
  240.                 else
  241.                     if (c == '.' && getState() != 17 && getState() < 25)
  242.                         setState(25);
  243.                     else error = true;
  244.         }
  245.     }
  246.     bool theEnd()
  247.     {
  248.         if (error == false && getState() > 25)
  249.             return true;
  250.         else
  251.             return false;
  252.     }
  253. };
  254.  
  255.  
  256. int main()
  257. {
  258.     char *txt = new char[255];
  259.  
  260.     int i = 0;
  261.     while (cin >> txt[i])
  262.         i++;
  263.     txt[i] = '\0';
  264.  
  265.     FSM avt;
  266.  
  267.     i = 0;
  268.     avt.showState();
  269.     while (txt[i] != '\0')
  270.     {
  271.         avt.nextState(txt[i]);
  272.         avt.showState();
  273.         i++;
  274.     }
  275.  
  276.     if (avt.theEnd())
  277.         cout << "kek";
  278.     else
  279.         cout << "ne kek";
  280.  
  281.     return 0;
  282. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement