pvjc22/du4/program.c

141 lines
2.8 KiB
C
Raw Normal View History

#include<stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include<math.h>
#include <string.h>
struct priklad//vytvorenie štruktúry, typu, v ktorom existujú iné typy
{
double one;
char znak;
double two;
double sum;
};
int sort(struct priklad prik[20]);
void printAll(struct priklad prik[20], int i);
int main(){
struct priklad prik[20];
int i = sort(prik);
printAll(prik,i);
return 0;
}
void printAll(struct priklad prik[20], int i){
for (size_t j = 0; j < i; j++)
{
if( prik[j].one == 0 && prik[j].two == 0 &&prik[j].sum == 0){
printf("CHYBA\n");
continue;
}
if(prik[j].znak == '+'){
// printf("%f", prik[j].one + prik[j].two);
if (round((prik[j].one + prik[j].two)*100)/100 == prik[j].sum)// round-zaokrúhli číslo
{
printf("OK\n");
} else
{
printf("ZLE\n");
}
}
if(prik[j].znak == '-'){
if (round((prik[j].one - prik[j].two)*100)/100 == prik[j].sum)
{
printf("OK\n");
} else
{
printf("ZLE\n");
}
}
if(prik[j].znak == '*'){
if (round(prik[j].one * prik[j].two * 100) / 100 == prik[j].sum)
{
printf("OK\n");
} else
{
printf("ZLE\n");
}
}
if(prik[j].znak == '/'){
if (round(prik[j].one / prik[j].two * 100) / 100 == prik[j].sum)
{
printf("OK\n");
} else
{
printf("ZLE\n");
}
}
}
}
int sort(struct priklad prik[20]){
int i = 0;
while (1)
{
char step_line[30];
char step_one[5];
memset(step_one,' ',5);//vyplnenie štandardnými hodnotami poľa
char step_two[10];
memset(step_two,' ',10);
char step_sum[10];
memset(step_sum,' ',10);
char* r = fgets(step_line,30,stdin); //číta koncový znak
if (r == NULL){
break;
}
int k = 0;
while (step_line[k] != ' ')
{
step_one[k] = step_line[k];
k++;
}
k++;
prik[i].znak = step_line[k];
k = k+2;
int j = 0;
while (step_line[k]!= ' ')
{
step_two[j] = step_line[k];
k++;
j++;
}
k = k+3;
int p = 0;
while (k<strlen(step_line)-1)//dĺžka linky
{
step_sum[p] = step_line[k];
k++;
p++;
}if (isalpha(step_one[0])|| isalpha(step_two[0])|| isalpha(step_sum[0]))//isalpha-vráti hodnotu true, ak je vstupný argument z abecedy
{
prik[i].one = 0;
prik[i].two = 0;
prik[i].sum = 0;
}else{
prik[i].one = atof(step_one);//vytvorí číslo z radu kúziel
prik[i].two = atof(step_two);
prik[i].sum = atof(step_sum);
}
if (step_line[0] == '\n')
{
i--;
}
i++;
}
return i;
}