From 19067c47b9bc968170dc0c0be0a2fd59f3edceba Mon Sep 17 00:00:00 2001 From: Yurii Yakovenko Date: Fri, 25 Oct 2024 19:41:46 +0000 Subject: [PATCH] Update a1/program.c --- a1/program.c | 83 ++++------------------------------------------------ 1 file changed, 5 insertions(+), 78 deletions(-) diff --git a/a1/program.c b/a1/program.c index a8d341f..ad6c78d 100644 --- a/a1/program.c +++ b/a1/program.c @@ -11,11 +11,6 @@ struct Stack int size; }; -void push_stack(struct Stack* stack, float value); -char pop_stack(struct Stack* stack); -int count_stack(struct Stack* stack); - - void push_stack(struct Stack* stack, char value) { assert(stack->size < STACK_SIZE); @@ -38,7 +33,7 @@ void print_stack(struct Stack* stack) { for (int i=0; isize; i++) { - printf("%.2f ", stack->values[i]); + printf("%c ", stack->values[i]); } printf("\n"); } @@ -84,79 +79,11 @@ int main() } } - +//Crossed bracket > in 12, expected ) - - - - int err=0; - - char buf[505]; - - do - { - char* p=fgets(buf, 299, stdin); - if(p) - { - char c=buf[0]; - float op1, op2, rez; - if(c=='+'||c=='-'||c=='/'||c=='*') - { - if(count_stack(&mystack)<2) - { - printf("not enough operands\n"); - err=3; - break; - } - op2=pop_stack(&mystack); - op1=pop_stack(&mystack); - switch(c) - { - case '+': rez=op1+op2; break; - case '-': rez=op1-op2; break; - case '/': - if(c=='/' && op2==0) - { - err=1; - printf("division by zero\n"); - } - else - rez=op1/op2; - break; - case '*': rez=op1*op2; break; - } - } - else - { - if(isdigit(c)) - { - rez=atof(buf); - } - else - { - err=1; - printf("bad input\n"); - } - } - - if(!err) - { - if(count_stack(&mystack)==STACK_SIZE) - { - printf("full stack\n"); - err=4; - break; - } - push_stack(&mystack, rez); - print_stack(&mystack); - } - } - else break; - - }while(1); - if(!err) - printf("no input\n"); + return 0; -} \ No newline at end of file +} + \ No newline at end of file