Проверка правильности расстановки круглых скобок. - C (СИ)
Формулировка задачи:
Завтра нужно сдавать, помогите пожалуйста!
Нужна программа, проверяющая расстановку круглых скобок обязательно с помощью стека. Я написал что был горазд, однако программа, как ни бьюсь, полна ошибок. Все, что сам разумел - исправил, теперь только на вас надежда. Результат получаю, естественно, некорректный. Помогите, подскажите, что и как исправить, чтобы она делала правильные расчеты?
PS: пользователь линух (про библиотеки).
Извините, последний if запилил только что
#include <stdio.h>
#include <locale.h>
#include <string.h>
#define N 100
void push(int top, int i, char stack[], char str[])
{ stack[top]=str[i];
top++;
}
void pop(int top)
{ top--;
}
int main()
{
int i, l, top=0;
char stack[N];
char str[] = "";
setlocale(LC_ALL, "russian_russia.1251");
printf("Программа проверяет правильность расстановки круглых скобок.\n");
printf("Введите необходимое выражение (до 50 символов):");
fgets(str, 50, stdin);
puts(str);
l = strlen(str); // проверка длинны строки
if (l <= 2) // т.к. длинна равна количеству сиволов +1
{ printf("Слишком короткое выражение!\n");
}
for (i=0; str[i]!='\0'; i++)
{ if (str[i] == '(')
{ push(top, i, stack, str);
}
if (str[i] == ')')
{ if (top==0)
{ printf("Ошибка при расстановке скобок!\n");
}
else
{ pop(top);
}
}
}
if (top == 0)
{
printf("\n Все верно!\n");
}
}
неужели никто не поможет?
Решение задачи: «Проверка правильности расстановки круглых скобок.»
textual
Листинг программы
static top;