usaa24/cv3/program.c
Bohdan Kapliuk c52a1879d9 cv3
2024-10-12 15:24:40 +03:00

70 lines
2.2 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);
vstup[strcspn(vstup, "\n")] = 0;
if(strlen(vstup) == 0){
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");
}
}