a2
This commit is contained in:
parent
435889c0bb
commit
41305a912a
86
a2/program.c
86
a2/program.c
@ -1,7 +1,85 @@
|
||||
#include <stdio.h>
|
||||
#include "stdio.h"
|
||||
#include "string.h"
|
||||
|
||||
int main(){
|
||||
printf ("Hello world\n");
|
||||
return 0;
|
||||
struct Stack {
|
||||
char symbol[100];
|
||||
int size;
|
||||
};
|
||||
|
||||
void pushStack(struct Stack* stack, char symbol){
|
||||
stack->symbol[stack->size] = symbol;
|
||||
stack->size++;
|
||||
}
|
||||
|
||||
float popStack(struct Stack* stack){
|
||||
char c = stack->symbol[stack->size -1];
|
||||
stack->size -= 1;
|
||||
return c;
|
||||
}
|
||||
|
||||
int main(){
|
||||
|
||||
char string[50]; //0 - 49
|
||||
char BB[50]; //0 - 49
|
||||
|
||||
struct Stack stack;
|
||||
memset(&stack, 0, sizeof(struct Stack));
|
||||
|
||||
int x = 0;
|
||||
|
||||
scanf("%[^\n]", string);
|
||||
|
||||
strcpy(BB, string);
|
||||
int i = 0;
|
||||
|
||||
while (1){
|
||||
|
||||
if( BB[i] == '[' || BB[i] == '(' || BB[i] == '{' || BB[i] == '<'){
|
||||
|
||||
pushStack(&stack, BB[i]);
|
||||
BB[i] = ' ';
|
||||
x++;
|
||||
}
|
||||
|
||||
if( BB[i] == ']' || BB[i] == ')' || BB[i] == '}' || BB[i] == '>'){
|
||||
if (x == 0){
|
||||
printf ("Read: %s\nUnexpected closing bracket %c in %d\n",string, BB[i], i);
|
||||
return 0;
|
||||
}
|
||||
|
||||
char c = popStack(&stack);
|
||||
if (c =='('){
|
||||
c--;
|
||||
}
|
||||
|
||||
if (c+2 != BB[i]){
|
||||
printf("Read: %s\nCrossed bracket %c in %d, expected %c \n", string, BB[i], i, c+2);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
if (i == strlen(string)) break;
|
||||
}
|
||||
|
||||
if (stack.size > 0){
|
||||
|
||||
printf("Read: %s\nMissing closing brackets: ", string);
|
||||
while (stack.size > 0){
|
||||
char c = popStack(&stack);
|
||||
if (c =='('){
|
||||
c--;
|
||||
}
|
||||
printf("%c", c+2);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf("Read: %s\nAll brackets OK\n", string);
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user