66 lines
1.6 KiB
C
66 lines
1.6 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <math.h>
|
|
|
|
#define MAX_LENGTH 100
|
|
|
|
int check(char* input);
|
|
|
|
int main() {
|
|
char input[MAX_LENGTH];
|
|
while (fgets(input,MAX_LENGTH, stdin)) {
|
|
if (input[0] == '\n') {
|
|
break;
|
|
}
|
|
input[strcspn(input, "\n")] = '\0';
|
|
int resultat =check(input);
|
|
if (resultat ==1) {
|
|
printf("OK\n");
|
|
} else {
|
|
if (resultat == -1) {
|
|
printf("ZLE\n");
|
|
} else {
|
|
printf("CHYBA\n");
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int check(char* input) {
|
|
double number1, number2, resultat, givenResult;
|
|
char znak;
|
|
int a=0;
|
|
a=sscanf(input, " %lf %c %lf = %lf ", &number1, &znak, &number2, &givenResult);
|
|
if (input == NULL || strlen(input) == 0 || strspn(input, " \t\n") == strlen(input)) {
|
|
return 0;
|
|
}
|
|
if (a != 4) {
|
|
return 0;
|
|
}else {
|
|
switch (znak) {
|
|
case '+':
|
|
resultat=number1+number2;
|
|
break;
|
|
case '-':
|
|
resultat=number1-number2;
|
|
break;
|
|
case '*':
|
|
resultat=number1*number2;
|
|
break;
|
|
case '/':
|
|
if (number2 == 0) {
|
|
return -1;
|
|
} else { resultat = number1 / number2;
|
|
}
|
|
break;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
resultat = round(resultat * 100)/100;
|
|
if (resultat-givenResult ==0 ) {
|
|
return 1;
|
|
} else { return -1;
|
|
}
|
|
} |