З клавіатури вводиться текстовий рядок. Скласти програму яка перевіряє чи співпадає кількість відкритих і закритих дужок у введеному рядку ( перевірити для усіх типів дужок) на С++
Ответ
0/5
(0 оценок)
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;
}
Пояснення:
Даний код є вирішенням задачі. Основні пояснення надані у коментарях до коду.