Проверить правильность расстановки скобок - 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;
}

Объяснение кода листинга программы

Код проверяет правильность расстановки скобок в строке, введенной пользователем.

  1. Создается стек s для хранения символов скобок.
  2. Вводится строка string.
  3. Происходит итерация по каждому символу строки.
  4. Если текущий символ является скобкой, он добавляется в стек.
  5. Если текущий символ является закрывающей скобкой ('), закрывающей скобкой двойных кавычек (}), или закрывающей скобкой квадратных кавычек (']'), и стек пуст, выводится сообщение об ошибке Disbalans bolshe zakritix skobok и программа завершается.
  6. Если текущий символ является открывающей скобкой (('{') или ('[')), и в стеке есть элемент, который является закрывающей скобкой для этой открывающей скобки, выводится сообщение об ошибке Nesoootvetstvie tipa и программа завершается.
  7. Если в стеке остались элементы, выводится сообщение Disbalans bolshe otkritix skobok.
  8. Если стек пуст, выводится сообщение Balans.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы