usaa24/cv3/program.c
Bohdan Kapliuk d17535a455 cv3
2024-10-12 15:14:54 +03:00

69 lines
2.1 KiB
C

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define STACK_SIZE 100
struct stack{
float values[STACK_SIZE];
int size;
};
int main(){
struct stack mystack;
memset(&mystack,0,sizeof(struct stack));
char vstup[STACK_SIZE];
int counter = 0;
while(1){
fgets(vstup, STACK_SIZE, stdin);
if(vstup[0] == '\n'){
break;
}
if(vstup[0] == '-' || vstup[0] == '+' || vstup[0] == '*' || vstup[0] == '/'){
if(vstup[0] == '-'){
mystack.values[0] = mystack.values[0] - mystack.values[1];
for(int i = 1; mystack.values[i] != 0;i++){
mystack.values[i] = mystack.values[i+1];
mystack.values[i+1] = 0;
counter--;
}
}
if(vstup[0] == '/'){
mystack.values[0] = mystack.values[0] / mystack.values[1];
for(int i = 1; mystack.values[i] != 0;i++){
mystack.values[i] = mystack.values[i+1];
mystack.values[i+1] = 0;
counter--;
}
}
if(vstup[0] == '*'){
mystack.values[0] = mystack.values[0] * mystack.values[1];
for(int i = 1; mystack.values[i] != 0;i++){
mystack.values[i] = mystack.values[i+1];
mystack.values[i+1] = 0;
counter--;
}
}
if(vstup[0] == '+'){
mystack.values[0] = mystack.values[0] + mystack.values[1];
for(int i = 1; mystack.values[i] != 0;i++){
mystack.values[i] = mystack.values[i+1];
mystack.values[i+1] = 0;
counter--;
}
}
}
else{
float cislo = strtof(vstup, NULL);
mystack.values[counter] = cislo;
counter++;
}
mystack.size = counter;
for(int i =0; mystack.values[i] != 0;i++){
printf("%.2f ", mystack.values[i]);
}
printf("\n");
}
}