diff --git a/a1/program.c b/a1/program.c index f1a9a38..ad756c6 100644 --- a/a1/program.c +++ b/a1/program.c @@ -1,69 +1,60 @@ #include #define MAX 100 -void serch_zatv(char vhod[MAX]){ - +void serch_zatv(char vhod[MAX]) { char first[2] = "{}"; char second[2] = "[]"; - char thrid[2] = "<>"; + char third[2] = "<>"; char fourth[2] = "()"; int idx = 0; int idt = 0; - char find[50]; + char find[50] = {0}; - while(vhod[idx] != "\0"){ - - if(vhod[idx] == first[0]){ - find[idt] = first[1]; - idt++; - } - - if(vhod[idx] == second[0]){ - find[idt] = second[1]; - idt++; - } - - if(vhod[idx] == thrid[0]){ - find[idt] = thrid[1]; - idt++; - } - - if(vhod[idx] == fourth[0]){ - find[idt] = fourth[1]; - idt++; - } - - for(int i = 0; i < idt; i++){ - if(vhod[idx] == find[i]){ - find[i] = "."; - for(int r = i + 1; i < idt; r++){ - if(find[r] != "." || find[r] != "\0"){ - printf("Crossed bracket %c in %d, expected %c", vhod[idx], idx, find[idt]); - return 0; + while (vhod[idx] != '\0') { + if (vhod[idx] == first[0]) { + find[idt] = first[1]; + idt++; + } else if (vhod[idx] == second[0]) { + find[idt] = second[1]; + idt++; + } else if (vhod[idx] == third[0]) { + find[idt] = third[1]; + idt++; + } else if (vhod[idx] == fourth[0]) { + find[idt] = fourth[1]; + idt++; + } else { + for (int i = 0; i < idt; i++) { + if (vhod[idx] == find[i]) { + find[i] = '.'; + for (int r = i + 1; r < idt; r++) { + if (find[r] != '.' && find[r] != '\0') { + printf("Crossed bracket %c at position %d, expected %c\n", vhod[idx], idx, find[i]); + return; + } + } + break; } } } + idx++; } - - idx++; - } - for(int i = 0; i < idt){ - if(find[i] != "." || find[i] != "\0"){ - printf("herna"); - return 0; + + for (int i = 0; i < idt; i++) { + if (find[i] != '.' && find[i] != '\0') { + printf("Unmatched bracket\n"); + return; } } - printf("All brackets OK"); + + printf("All brackets OK\n"); } - - int main() { char riadok[MAX]; + scanf("%s", riadok); // Без амперсанда & - scanf("%s", &riadok); serch_zatv(riadok); - return 0; -} \ No newline at end of file +}