pvjc23/du4/program.c

138 lines
2.5 KiB
C

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <ctype.h>
#define LINE_SIZE 150
int main() {
char znaky[LINE_SIZE];
char* r = NULL;
int symbol[LINE_SIZE];
int sym = 0;
char* koniec_cisla = NULL;
char* zaciatok_cisla = znaky;
//char* koniec_pola;
float cislo = 0.0;
float a = 0;
float b = 0;
float c = 1;
int counter = 0;
int counter2 = 0;
float sr= 0;
int p = 0;
int check = 0;
while ((r = fgets(znaky, LINE_SIZE, stdin)) != NULL) {
if(znaky[0] == '\n'){
break;
}
for (int i = 0; i < strlen(znaky); i++) {
if(znaky[i] == ','){
if(check != 1)
printf("CHYBA\n");
check = 1;
}
if (znaky[i] == '*' || znaky[i] == '/' || znaky[i] == '+' || znaky[i] == '=') {
symbol[sym] = znaky[i];
znaky[i] = ' ';
sym++;
}
if(znaky[i] == '-'){
counter2 = 5;
if(znaky[i - 1] == ' ' && znaky[i + 1] == ' '){
symbol[sym] = znaky[i];
znaky[i] = ' ';
sym++;
}
}
}
zaciatok_cisla = znaky;
while (*zaciatok_cisla != '\0') {
cislo = strtof(zaciatok_cisla, &koniec_cisla);
if (zaciatok_cisla == koniec_cisla) {
if(check != 1){
printf("CHYBA\n");
}
check = 1;
break;
}
else {
if(counter == 0){
a = cislo;
}
if(counter == 1){
b = cislo;
}
if(counter == 2){
c = cislo;
}
counter++;
//printf("Nasiel som cislo %f\n", cislo);
zaciatok_cisla = koniec_cisla + 1;
}
}
counter = 0;
for(int j = 0; j < sym; j++){
if(symbol[j] == '=')
p = j;
}
//printf("--->>%d", sym);
if(sym == 1){
if(counter2 == 5){
//printf("a--->>%f\n", a);
//printf("b--->>%f\n", b);
b = b * -1;
sr = a - b;
//printf("%f", sr);
}
else{
if(check != 1){
printf("CHYBA\n");
check = 1;
}
}
}
else{
if(symbol[p - 1] == '+'){
sr = a + b;
//printf("%2.f", sr);
}
if(symbol[p - 1] == '-'){
sr = a - b;
//printf("%2.f", sr);
}
if(symbol[p - 1] == '*'){
sr = a * b;
//printf("%2.f", sr);
}
if(symbol[p - 1] == '/'){
sr = a / b;
//printf("%2.f", sr);
}
}
sr = roundf(sr * 100) / 100;
if(check != 1){
if(c == sr){
printf("OK\n");
}
else{
printf("ZLE\n");
}
}
check = 0;
sym = 0;
counter = 0;
}
if (feof(stdin)) {
//printf("Dostal som sa na koniec suboru\n");
}
return 0;
}