Почему это не печать «Паратезис сбалансирован». . Он падает всякий раз, когда я прохожу баланс скобки, как «(2 + 4)» и т.д. И отлично работает, когда я прохожу разбалансировки скобку, как «((3 + 4 (» Вот мой кодСкорлупа не сбалансирована
struct stackADT {
int count;
char data[50];
} s;
bool Is_Equal(char b, char c){
if(b == '(' && c == ')')
return true;
if(b == '{' && c == '}')
return true;
if(b == '[' && c == ']')
return true;
else{
return false;
}
}
bool pop(struct stackADT *s, int *num) {
if (Is_Empty())
return false;
else {
*num = s->data[(s->count) -1];
(s->count)--;
return true;
}
}
int main(void) {
char expression[100];
int i, len;
initialize();
printf("Enter an expression: ");
scanf("%s", &expression);
len = strlen(expression);
for(i = 0; i < len; i++){
if(expression[i] == '(' || expression[i] == '{' || expression[i] == '['){
push(expression[i]);
}
if(expression[i] == ')' || expression[i] == '}' || expression[i] == ']'){
pop(&s,expression[i]);
}
}
if(Is_Equal(pop(&s, expression[i]), expression[i]))
printf("Parenthesis are balanced\n");
else{
printf("Parenthesis are unbalanced\n");
}
return 0;
getch();
}
Вы прочитали комментарии к своему предыдущему вопросу? –
Да, эта часть выполнена, но у меня возникают проблемы с выяснением того, почему она не печатает «Скобки сбалансированы». – Sami
* Отладить его *. Начните с простого случая '()'. –