Advertisement
codisinmyvines

MAAAAARAAAAT

May 24th, 2020
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. #include<cmath>
  4. #include<iomanip>
  5. using namespace std;
  6.  
  7. int  main()
  8. {
  9.     const int n = 100, kol_sost = 10;
  10.     const int number_comand = 18;
  11.     char a[n];
  12.     struct zap
  13.     {
  14.         char sym;
  15.         int sost;
  16.         char move;// R-right L-left H-halt
  17.     };
  18.  
  19.     zap tabl[kol_sost][100];
  20.     int i, p;
  21.  
  22.     int sost = 1;
  23.  
  24.     for (i = 0; i < n; i++)
  25.         a[i] = '_';
  26.  
  27.     ifstream in("turing.txt");
  28.     ofstream out("out.txt");
  29.     char sym_in, sym_out;
  30.     int sost_in, sost_out;
  31.     char mv;
  32.     if (!in)
  33.     {
  34.         cout << "Can't open file " << endl;
  35.         system("pause");
  36.         exit(-1);
  37.     }
  38.     for (i = 0; i < number_comand; i++)
  39.     {
  40.         in >> sym_in >> sym_out >> mv >> sost_in >> sost_out;
  41.         tabl[sost_in][sym_in].sost = sost_out;
  42.         tabl[sost_in][sym_in].sym = sym_out;
  43.         tabl[sost_in][sym_in].move = mv;
  44.     }
  45.  
  46.     in.close();
  47.     out << "   TURING MACHINES  (ALAN TURING 1937) " << endl;
  48.  
  49.     out << setw(7);
  50.     for (int i = 1; i < kol_sost; i++) {
  51.         out << setw(6) << i;
  52.     }
  53.     out << endl;
  54.     out << '_';
  55.     tabl[8]['_'].move = 'H';
  56.     tabl[8]['_'].sost = 0;
  57.     tabl[8]['_'].sym = '1';
  58.     for (sost_in = 1; sost_in < kol_sost; sost_in++)
  59.         out << setw(4) << tabl[sost_in]['_'].sym << tabl[sost_in]['_'].sost<< tabl[sost_in]['_'].move;
  60.     out << endl;
  61.  
  62.     out << '1';
  63.     tabl[5]['1'].move = 'H';
  64.     tabl[5]['1'].sost = 0;
  65.     tabl[5]['1'].sym = '1';
  66.     for (sost_in = 1; sost_in < kol_sost; sost_in++)
  67.         out << setw(4) << tabl[sost_in][sym_in].sym
  68.         << tabl[sost_in][sym_in].sost << tabl[sost_in][sym_in].move;
  69.     out << endl;
  70.     in.close();
  71.  
  72.     cout << endl << "enter input word; number of symbols <=20;  symbol '_' is a last symbol  " << endl;
  73.     cout << "alfabet  ['_','0'] " << endl;
  74.  
  75.     cout << endl << "input word " << endl;
  76.  
  77.     for (i = 50; i < n; i++)
  78.     {
  79.         cin >> a[i];
  80.         if (a[i] == '_') break;
  81.     }
  82.  
  83.     out << "input word" << endl;
  84.     for (i = 0; i < n; i++) out << a[i];
  85.     out << endl;
  86.  
  87.     i = 50; int t = 0;
  88.     while (sost && (t < 1000))
  89.     {
  90.         char r = tabl[sost][a[i]].sym;
  91.         int s = tabl[sost][a[i]].sost;
  92.         mv = tabl[sost][a[i]].move;
  93.         sost = s;
  94.         a[i] = r;
  95.         if (mv == 'R') i++; else
  96.             if (mv == 'L') i--;
  97.         t++;
  98.     }
  99.     out << endl << "output word" << endl;
  100.     for (i = 0; i < n; i++) out << a[i];
  101.     out.close();
  102.  
  103.     return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement