Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. std::string gramatyka( std::string napis, int n )
  5. {
  6.     while(n--)
  7.     {
  8.         int i = napis.length() - 1;
  9.         if( napis[ i ] == 'S' )
  10.         {
  11.             napis[i] = 'A';
  12.             napis += "A";
  13.         }
  14.         else
  15.         {
  16.             napis[i] = 'S';
  17.             napis += "S";
  18.         }
  19.     }
  20.     return napis;
  21. }
  22.  
  23. std::string zamien_gramatyka( std::string napis )
  24. {
  25.     for( unsigned int i = 0; i < napis.length(); i++ )
  26.     {
  27.         if( napis[i] == 'S' )
  28.             napis[i] = '0';
  29.         else
  30.             napis[i] = '1';
  31.     }
  32.  
  33.     return napis;
  34. }
  35.  
  36. void wypisz_gramatyke()
  37. {
  38.     std::cout << "G = ( V, T, P, S )" << std::endl
  39.               << "V = { S, A }" << std::endl
  40.               << "T = { 0, 1 }" << std::endl
  41.               << "P = { S -> AA|0, A -> SS|1 }" << std::endl
  42.               << "S = { S }" << std::endl;
  43. }
  44.  
  45. bool sprawdz_znak_poczatkowy( std::string napis )
  46. {
  47.     if( napis.length() != 1 || (napis[0] != 'A' && napis[0] != 'S'))
  48.         return false;
  49.     return true;
  50. }
  51.  
  52. int main()
  53. {
  54.     std::string napis = "S";
  55.     int n;
  56.  
  57.     //std::cout << "Podaj znak pocz¹tkowy: ";
  58.     //std::cin >> napis;
  59.     if( sprawdz_znak_poczatkowy( napis ) == false )
  60.     {
  61.         //std::cout << "Podano zly znak poczatkowy, uzywaj tylko A i S";
  62.         return -1;
  63.     }
  64.  
  65.     wypisz_gramatyke();
  66.  
  67.     std::cout << "Podaj liczbe n: ";
  68.     std::cin >> n;
  69.  
  70.     for( int i = 1; i < n; i++)
  71.     {
  72.         std::cout << zamien_gramatyka( gramatyka( napis, i ) ) << std::endl;
  73.     }
  74.  
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement