Advertisement
Alyks

Untitled

Feb 11th, 2020
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. bool isBalanced(string str) {
  7.     int count = 0;
  8.     int i = 0;
  9.     bool continueCycle = true;
  10.     while(i < str.length() && continueCycle) {
  11.         char curr = str[i];
  12.         if(curr == '(')
  13.             count++;
  14.         else if(curr == ')') {
  15.             if(count == 0)
  16.                 continueCycle = false;
  17.             else
  18.                 count--;
  19.         }
  20.         i++;
  21.     }
  22.  
  23.     return continueCycle && count == 0;
  24. }
  25.  
  26. bool isStringContainsParentheses(string str) {
  27.     return str.find('(') != -1 || str.find(')') != -1;
  28. }
  29.  
  30. string readFile(string filePath) {
  31.     string str;
  32.     ifstream inputFile;
  33.     inputFile.open(filePath);
  34.     if (inputFile && getline(inputFile, str))
  35.         inputFile.close();
  36.     else
  37.         cout << "Произошла ошибка при чтении файла. Убедитесь, что такой файл существует, либо проверьте имя файла."
  38.              << endl;
  39.     return str;
  40. }
  41.  
  42. void saveResult(string resultStr) {
  43.     string decision;
  44.     while (decision != "Y" && decision != "N") {
  45.         cout << "Сохранить результат в файл? (Y - сохранить, N - не сохранять)" << endl;
  46.         cin >> decision;
  47.     }
  48.  
  49.     if (decision == "Y") {
  50.         ofstream outputFile;
  51.         outputFile.open("output.txt");
  52.         outputFile << resultStr;
  53.         outputFile.close();
  54.         cout << "Результат сохранен в файл output.txt" << endl;
  55.     }
  56. }
  57.  
  58. int main() {
  59.     cout << "Данная программа проверяет баланс скобок в строке\n" << endl;
  60.     string inputType;
  61.     while (inputType != "C" && inputType != "F") {
  62.         cout << "Введите C, если хотите ввести строку из консоли, или F, если хотите ввести строку из файла" << endl;
  63.         cin >> inputType;
  64.     }
  65.     string resultStr, str;
  66.     bool result = false;
  67.     if (inputType == "C") {
  68.         cout << "Введите строку, из которой необходимо удалить повторяющиеся символы" << endl;
  69.         cin >> str;
  70.     } else if (inputType == "F") {
  71.         cout << "Введите путь к файлу" << endl;
  72.         string filePath;
  73.         cin >> filePath;
  74.         str = readFile(filePath);
  75.     }
  76.     result = isStringContainsParentheses(str);
  77.     if(result) {
  78.         result = isBalanced(str);
  79.         resultStr = result ? "Баланс скобок соблюдён" : "Баланс скобок не соблюдён";
  80.     }
  81.     else
  82.         resultStr = "В строке отсутсвуют скобки";
  83.     cout << resultStr << endl;
  84.     saveResult(resultStr);
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement