pvjc24/a1/program.c
Bohdan Kapliuk 2bfb24b6ed a1
2024-03-28 22:33:03 +02:00

58 lines
1.5 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdbool.h>
#define SIZE 100
bool checkZnaka(char znaky[],char znak1){
for(int i = 0;i < 4;i++){
if(znaky[i] == znak1){
return false;
}
}
return true;
}
struct vzorec{
int x;
int y;
int result;
char znak1;
char znak2;
};
int main(){
char line[SIZE];
char znaky[] = "+-*/";
memset(line,0,SIZE);
struct vzorec funkcia[SIZE];
memset(funkcia,0,SIZE);
char* pEnd;
while (fgets(line,SIZE,stdin) && line[0] != '\n'){
if(line == NULL){
break;
}
int n = sscanf(line, "%d %c %d %c %d", &funkcia->x, &funkcia->znak1, &funkcia->y, &funkcia->znak2, &funkcia->result);
if(checkZnaka(znaky, funkcia->znak1) == true || funkcia->znak2 != '=' || funkcia->x == 0 || funkcia->y == 0){
printf("CHYBA\n");
return 0;
}
double r1 = (round(funkcia->x*10) + round(funkcia->y*10))/10;
double r2 = (round(funkcia->x*10) - round(funkcia->y*10))/10;
double r3 = (round(funkcia->x*10) * round(funkcia->y*10))/10;
double r4 = (round(funkcia->x*10) / round(funkcia->y*10))/10;
if(funkcia->result != r1 && funkcia->result != r2 && funkcia->result != r3 && funkcia->result != r4){
printf("ZLE\n");
return 0;
}
else{
printf("OK\n");
return 0;
}
printf("x: %d, znak1: %c, y: %d, znak2: %c, result: %d\n", funkcia->x, funkcia->znak1, funkcia->y, funkcia->znak2, funkcia->result);
}
return 0;
}