[C]sprawdzanie sekwencji nawiasów

0

Witam,
Mam problem z pewnym zadaniem
[quote]
Zmodyfikuj program z zadania 1 tak aby działał poprawnie również w przypadku
ciągów złożonych z nawiasów okrągłych i kwadratowych[/quote]

[code]#include<stdio.h>
#define LENGTH 1000000
main(){
int x;
int i;
int parenthesis = 0;
int square_bracket = 0;
int stack[LENGTH]={0};
char tablica[LENGTH]={0};

x=0;
i=0;

while(i++){
switch(tablica[i]){
case '(': stack[++x]='('; break;
case ')': if(stack[x]!='(')
--x; break;
case '[': stack[++x]='['; break;
case ']': if(stack[x]!='[')
--x; break;
}
}
if(tablica[i] || x)
printf("Zapis jest niepoprawny");
else
printf("Zapis jest poprawny");
return 0;

}
[/code]

Podczas uruchamiania coś się sypie i pojawia się komunikat o zamknięciu programu.
Wraz z nim:[code]Podpis problemu:
Nazwa zdarzenia problemu: APPCRASH
Nazwa aplikacji: 2.exe
Wersja aplikacji: 0.0.0.0
Sygnatura czasowa aplikacji: 4eecdfd0
Nazwa modułu z błędem: 2.exe
Wersja modułu z błędem: 0.0.0.0
Sygnatura czasowa modułu z błędem: 4eecdfd0
Kod wyjątku: c00000fd
Przesunięcie wyjątku: 00001a8e
Wersja systemu operacyjnego: 6.1.7601.2.1.0.768.3
Identyfikator ustawień regionalnych: 1045
Dodatkowe informacje 1: 300c
Dodatkowe informacje 2: 300c66a78dcf7f74526f7d4e621645af
Dodatkowe informacje 3: 8f80
Dodatkowe informacje 4: 8f80542d5d2c36ec24283db6e4ec57be
[/code]

0
 while(i++){

A ten warunek to niby co ma sprawdzać? A co jak 'i' przekroczy LENGTH (będziesz miał same nawiasy '(' i będzie ich LENGTH+1)? A co jak pierwszy nawias to będzie ')' albo ']' i zrobisz --x i x spadnie poniżej 0? MYŚL zanim zaczniesz pisać...

1 użytkowników online, w tym zalogowanych: 0, gości: 1