Проверить правильность расстановки скобок - C (СИ)
Формулировка задачи:
Не знаю в чем ошибка, программа не работает. Подскажите пожалуйста))
/* Проверить правильность расстановки скобок. */ #include <iostream> #include <stack> #include <string.h> using namespace std; int main() { stack <char > s; char * string = new char[300]; cout<<"Enter string: "<<endl; cin>>string; s.top()=0; for (int i=0; i!='\0'; i++) { if ((string[i]=='(')||(string[i]=='[')||(string[i]=='{')) s.push(string[i]); else if ((string[i]==')')||(string[i]==']')||(string[i]=='}')) { if (s.top()==0){ cout<<"Disbalans bolshe zakritix skobok"<<endl; break; } } else s.pop(); if ((string[i]== ')') && ((s.top=='{') || (s.top=='['))) { cout<<"Nesoootvetstvie tipa"<<endl; break; } if ((string[i]== '}') && ((s.top=='(') || (s.top=='['))){ cout<<"Nesoootvetstvie tipa"<<endl; break; } if ((string[i]== ']') && ((s.top=='{') || (s.top=='('))){ cout<<"Nesoootvetstvie tipa"<<endl; break; } if (s.top() == 0) cout<<"Balans"<<endl; else cout<<"Disbalans bolshe otkritix skobok"<<endl; while (s.top()!=0) { s.pop(); cout<<string[i]; } } return 0; }
Решение задачи: «Проверить правильность расстановки скобок»
textual
Листинг программы
#include <iostream> #include <stack> #include <string.h> using namespace std; int main() { stack <char > s; char * string = new char[300]; cout<<"Enter string: "<<endl; cin>>string; for (int i=0; string[i]!=0; i++) { if ((string[i]=='(')||(string[i]=='{')||(string[i]=='[')) s.push(string[i]); else if ((string[i]==')')||(string[i]=='}')||(string[i]==']')) if (s.empty()) { cout<<"Disbalans bolshe zakritix skobok"<<endl; exit(0); } else s.pop(); if ((string[i]== ')') && ((s.top=='{') || (s.top=='['))) { cout<<"Nesoootvetstvie tipa"<<endl; exit(0); } if ((string[i]== '}') && ((s.top=='(') || (s.top=='['))) { cout<<"Nesoootvetstvie tipa"<<endl; exit(0); } if ((string[i]== ']') && ((s.top=='{') || (s.top=='('))) { cout<<"Nesoootvetstvie tipa"<<endl; exit(0); } } if (s.size()==0) cout<<"Balans"<<endl; else cout<<"Disbalans bolshe otkritix skobok"<<endl; //}}} return 0; }
Объяснение кода листинга программы
Код проверяет правильность расстановки скобок в строке, введенной пользователем.
- Создается стек
s
для хранения символов скобок. - Вводится строка
string
. - Происходит итерация по каждому символу строки.
- Если текущий символ является скобкой, он добавляется в стек.
- Если текущий символ является закрывающей скобкой ('), закрывающей скобкой двойных кавычек (
}
), или закрывающей скобкой квадратных кавычек (']'), и стек пуст, выводится сообщение об ошибкеDisbalans bolshe zakritix skobok
и программа завершается. - Если текущий символ является открывающей скобкой (('{') или ('[')), и в стеке есть элемент, который является закрывающей скобкой для этой открывающей скобки, выводится сообщение об ошибке
Nesoootvetstvie tipa
и программа завершается. - Если в стеке остались элементы, выводится сообщение
Disbalans bolshe otkritix skobok
. - Если стек пуст, выводится сообщение
Balans
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д