З клавіатури вводиться текстовий рядок. Скласти програму яка перевіряє чи співпадає кількість відкритих і закритих дужок у введеному рядку ( перевірити для усіх типів дужок) на С++
Ответ
0 (0 оценок)
0
lozromanik 6 месяцев назад
Светило науки - 166 ответов - 0 раз оказано помощи

Відповідь:

#include <iostream>

/*Перелічення для більш зрозумілого адресування у масивах

---Opened,Closed -- стан дужки(закрита чи відкрита).*/

enum Bracket_state{

   Opened,Closed

};

/*Клас Brackets, що містить у собі

Приватні члени

---Масиви curly_brackets,round_brackets та square_brackets для зберігання окремо станів кожного типу дужок

---Метод amount_of_opened_and_closed_brackets для виведення інформації щодо деякого типу

Публічні члени

---Метод calculate для обчислення загальної кількості дужок у рядку

---Метод total_result для виведення всієї інформації*/

class Brackets{

    unsigned long long curly_brackets[2] = {0,0},

                      round_brackets[2]= {0,0},

                      square_brackets[2] = {0,0};

   void amount_of_opened_and_closed_brackets(std::string type,unsigned long long (&brackets)[]){

        std::cout<<type<<"tOpened:"<<brackets[Opened]<<"tClosed:"<<brackets[Closed]<<"n";

        std::cout<<"Total amount of "<<type<<" brackets are"<<(brackets[Opened]==brackets[Closed]?"":" not")<<" the samen";

   }

   public:

   void calculate(std::string& input){

       for(int i = 0;i < input.length();i++){

       switch(input[i]){

           case '{':

           curly_brackets[Opened]++;

           break;

           case '}':

           curly_brackets[Closed]++;

           break;

           case '[':

           square_brackets[Opened]++;

           break;

           case ']':

           square_brackets[Closed]++;

           break;

           case '(':

           round_brackets[Opened]++;

           break;

           case ')':

           round_brackets[Closed]++;

           break;

       }

   }

   }

   void total_result(){

        std::cout<<"Total brackets:n";

        amount_of_opened_and_closed_brackets("Curly",curly_brackets);

        amount_of_opened_and_closed_brackets("Square",square_brackets);

        amount_of_opened_and_closed_brackets("Round",round_brackets);

   }

   

};

int main() {

   //Створюємо об'єкт класу

  Brackets brackets;

 

  //Створюємо та отримуємо рядок

   std::string input;

   getline(std::cin,input);

   

   //Виконуємо дії над об'єктом

   brackets.calculate(input);

   brackets.total_result();

   

   //Викликаємо паузу

   std::cin.get();

   return 0;

}

Пояснення:

Даний код є вирішенням задачі. Основні пояснення надані у коментарях до коду.

Остались вопросы?