Advertisement
DeD_M1sha

Проверка на возможность составить слово из первой строки

Dec 28th, 2016
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7.     char st1 [255], st2[255], s, ch;
  8.     string word, stroke;
  9.     bool WriteTrue = 0, Fail = 0;
  10.     cout << "Введите первую строчку: ";
  11.     cin.getline (st1, 255); // Записываем всю строку с учетом пробелов
  12.     {
  13.         ofstream Fout ("first.txt");
  14.         Fout << st1; // Записываем первую строку в файл first.txt
  15.         Fout.close ();
  16.     }
  17.     cout << "\nВведите вторую строчку: ";
  18.     cin.getline (st2, 255); // Записываем всю строку с учетом пробелов
  19.     {
  20.         ofstream Fout ("st2.txt");
  21.         Fout << st2; // Записываем вторую строку в файл st2.txt
  22.         Fout.close ();
  23.     }
  24.     {
  25.         ifstream f ("st2.txt");
  26.         ofstream Fout ("second.txt");
  27.             while (f >> s)
  28.                 Fout << s;
  29.         Fout.close ();
  30.         f.close ();
  31.     } // Это нам нужно для избавления от пробелов во всей строке
  32.     {
  33.         ofstream Fout ("answer.txt");
  34.         Fout << ""; // Очищаем файл для следующих запусков программ
  35.         Fout.close ();
  36.     }
  37.     ifstream f ("second.txt");
  38.         while (f >> word) // Считываем файл по 1 слову, пока слова в файле не закончатся
  39.         {
  40.             ofstream Write ("word.txt");
  41.             Write << word; // Записываем считанное слово в файл word.txt
  42.             Write.close ();
  43.             ifstream Read ("word.txt");
  44.                 while (Read >> s) // Считываем записанное слово по 1 символу, пока символы в слове не закончатся
  45.                 {
  46.                     ofstream Write ("answer.txt", ios::app); // Записываем в файл символы без перезаписи файла (каждый раз символы дописываются в файл)
  47.                     ifstream Read ("first.txt");
  48.                         while (Read >> ch) // Считываем по символьно файл first.txt, пока символы в файле не закончатся, или пока не сработает break
  49.                         {
  50.                             if (ch == s) // Если нашли нужный нам символ
  51.                             {
  52.                                 Write << ch;
  53.                                 break; // то останавливаем цикл
  54.                             }
  55.                         }
  56.                     Read.close ();
  57.                     Write.close ();
  58.                     { // Начала перезаписи исходной строки
  59.                         ofstream Write ("text.txt");
  60.                         ifstream Read ("first.txt");
  61.                             while (Read >> ch)
  62.                             {
  63.                                     if (ch == s && WriteTrue)
  64.                                         Write << ch;
  65.                                     else if (ch == s && !WriteTrue)
  66.                                         WriteTrue = 1;
  67.                                 if (ch != s)
  68.                                     Write << ch;
  69.                             }
  70.                         Read.close ();
  71.                         Write.close ();
  72.                     }
  73.                     WriteTrue = 0;
  74.                     {
  75.                         ifstream Read ("text.txt");
  76.                         Read >> word;
  77.                         Read.close ();
  78.                         ofstream Write ("first.txt");
  79.                         Write << word;
  80.                         Write.close ();
  81.                         // Конец перезаписи исходной строки
  82.                     } // То что выше - перезаписываем файл first.txt таким образом, чтобы использованный нами символ до этого удалился
  83.                 }
  84.         }
  85.     f.close ();
  86.     {
  87.         ifstream f ("second.txt");
  88.         f >> stroke; // Считываем вторую строчку
  89.         f.close ();
  90.         {
  91.             ifstream Read ("answer.txt");
  92.             Read >> word; // Считываем итоговое слово, которое мы получили, посимвольно записывая в файл
  93.             Read.close ();
  94.         }
  95.             if (stroke != word) // Если вторая строка не индеентична с итоговым словом,
  96.                 Fail = 1; // то это фейл, сборка невмозножна
  97.     }
  98.     cout << "Строку < " << st2 << " > ";
  99.         if (Fail) // Fail == 1
  100.             cout << "невозможно";
  101.         else // Fail == 0 (по умолчанию)
  102.             cout << "возможно";
  103.     cout << " собрать из символов первой строки.\n";
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement