82 lines
2.0 KiB
C
82 lines
2.0 KiB
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#define LINESIZE 100
|
|
|
|
struct kalkulacka{
|
|
float cislo; };
|
|
|
|
int main() {
|
|
struct kalkulacka number[LINESIZE];
|
|
memset(number, 0, sizeof(struct kalkulacka) * LINESIZE);
|
|
char line[LINESIZE];
|
|
size_t velkost;
|
|
memset(line, 0, LINESIZE);
|
|
int a = 0;
|
|
int i;
|
|
int input = 0;
|
|
float p;
|
|
float vys;
|
|
while (fgets(line, LINESIZE, stdin)) {
|
|
velkost = strlen(line);
|
|
if (velkost == 1 && line[velkost - 1] == '\n') {
|
|
|
|
break;
|
|
}
|
|
if (input >= 10){
|
|
|
|
break;
|
|
}
|
|
if (line[0] == '+' || line[0] == '-' || line[0] == '*' || line[0] == '/') {
|
|
input =+ 2;
|
|
if (line[0] == '+') {
|
|
number[a - 2].cislo = number[a - 2].cislo + number[a - 1].cislo;
|
|
a--;
|
|
}
|
|
if (line[0] == '-') {
|
|
number[a - 2].cislo = number[a - 2].cislo - number[a - 1].cislo;
|
|
a--;
|
|
}
|
|
if (line[0] == '*') {
|
|
number[a - 2].cislo = number[a - 2].cislo * number[a - 1].cislo;
|
|
a--;
|
|
}
|
|
if (line[0] == '/') {
|
|
if (number[a - 1].cislo == 0){
|
|
printf("division by zero");
|
|
vys = 1;
|
|
a = 0;
|
|
}
|
|
else {
|
|
number[a - 2].cislo = number[a - 2].cislo / number[a - 1].cislo;
|
|
a--;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if(line[0] >= 'a' && line[0] <= 'z') {
|
|
printf("bad input\n");
|
|
vys = 1;
|
|
break;
|
|
}
|
|
else {
|
|
p = atof(line);
|
|
number[a].cislo = p;
|
|
a++;
|
|
input++;
|
|
}
|
|
}
|
|
|
|
for (i = 0; i < a; i++){
|
|
printf("%.2f ", number[i].cislo);
|
|
}
|
|
|
|
printf("\n");
|
|
|
|
}
|
|
if (vys != 1) {
|
|
printf("no input\n");
|
|
}
|
|
return 0;
|
|
} |