From 4dbba7d790001c8cb5f7d6aafae91b5e9cf16be9 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 16 Oct 2025 00:52:16 +0200 Subject: [PATCH] funguje --- du3/program.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/du3/program.c b/du3/program.c index e69de29..7b68ec5 100644 --- a/du3/program.c +++ b/du3/program.c @@ -0,0 +1,118 @@ +#include +#include +#include +#include + +#define STACK_SIZE 10 + +struct stack +{ + float values[STACK_SIZE]; + int size; +}; + +void push_stack(struct stack* mystack, float value) +{ + assert(mystack->sizevalues[mystack->size]=value; + mystack->size+=1; +} + +int switch_operators(const char input[]) +{ + switch (input[0]) + { + case '+': + return 0; + break; + case '-': + return 0; + break; + case '*': + return 0; + break; + case '/': + return 0; + break; + default: + return 1; + break; + } +} + +float pop_stack(struct stack* mystack,const char input[]) +{ + assert(mystack->size>1); + float val1=mystack->values[mystack->size-2]; + float val2=mystack->values[mystack->size-1]; + switch (input[0]) + { + case '+': + mystack->size-=2; + return val1+val2; + break; + case '-': + mystack->size-=2; + return val1-val2; + break; + case '*': + mystack->size-=2; + return val1*val2; + break; + case '/': + mystack->size-=2; + return val1/val2; + break; + default: + break; + } +} + +int count_stack(struct stack* stack) +{ + +} + +void print_stack(struct stack* mystack) +{ + for(int i=0;isize;i++) + { + printf("%f",mystack->values[i]); + if (isize-1) + { + printf(" "); + } + } + printf("\n"); +} + + +int main() +{ + struct stack mystack; + memset(&mystack,0,sizeof(struct stack)); + char input[1000]; + while (fgets(input,sizeof(input),stdin)!=NULL) + { + int flag=switch_operators(input); + input[strcspn(input,"\n")]=0; + if (strlen(input)==0) + { + continue; + } + if (flag==0) + { + float op_num=pop_stack(&mystack,input); + push_stack(&mystack,op_num); + } + else + { + char* ptr; + float num=strtof(input,&ptr); + push_stack(&mystack,num); + } + print_stack(&mystack); + } + return 0; +} +