This commit is contained in:
Vadym Afanasiev 2026-03-20 11:53:55 +00:00
parent a6a8b725d2
commit fea4c4881b
2 changed files with 81 additions and 0 deletions

1
du3/README.md Normal file
View File

@ -0,0 +1 @@
Na túto úlohu som použil copilot a Claude Haiku 4.5, aby som si ujasnil, čo je 'parse' a ako ho používať. Použil som ho aj na preklad úlohy.

80
du3/program.c Normal file
View File

@ -0,0 +1,80 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main() {
char line[256];
while (fgets(line, sizeof(line), stdin) != NULL) {
//nothing
line[strcspn(line, "\n")] = 0;
//empty line
if (strlen(line) == 0) {
break;
}
//nospace
char pusto[256];
int j = 0;
for (int i = 0; line[i] != '\0'; i++) {
if (!isspace(line[i]) ) {
pusto[j = j + 1] = line[i];
}
}
pusto[j] = '\0';
// Parse
double n1;
double n2;
double expect;
char op;
int parsed = sscanf(pusto, "%lf%c%lf=%lf", &n1, &op, &n2, &expect);
if (parsed != 4) {
printf("CHYBA\n");
continue;
}
// is valid
if (op != '+' && op != '-' && op != '*' && op != '/') {
printf("CHYBA\n");
continue;
}
// resultat
double teraz;
switch (op) {
case '+':
teraz = n1 + n2;
break;
case '-':
teraz = n1 - n2;
break;
case '*':
teraz = n1 * n2;
break;
case '/':
if (n2 == 0.0) {
printf("CHYBA\n");
continue;
}
teraz = n1 / n2;
break;
}
// zaokrouhleni
double rounded_teraz = round(teraz * 100.0) / 100.0;
double rounded_expect = round(expect * 100.0) / 100.0;
if (fabs(rounded_teraz - rounded_expect) < 1e-9) {
printf("OK\n");
} else {
printf("ZLE\n");
}
}
return 0;
}