Обновить du3/program.c

This commit is contained in:
Bohdana Marchenko 2025-03-12 17:43:59 +00:00
parent fa09da2a6d
commit 4254807502

View File

@ -15,11 +15,6 @@
*
* Parametre:
* - line: Reťazec, z ktorého sa odstrániť koncový znak nového riadku.
*
* Príklad použitia:
* char buffer[256];
* fgets(buffer, sizeof(buffer), stdin);
* trim_newline(buffer); // Odstráni '\n' z konca reťazca, ak existuje.
*/
void trim_newline(char *line) {
size_t len = strlen(line);
@ -157,7 +152,7 @@ float calculate(float num1, char op, float num2, int *error) {
case '/':
// Pred delením overíme, či nedochádza k deleniu nulou
if (fabs(num2) < EPSILON) {
*error = 1;
*error = 1; // Chyba: delenie nulou
return 0;
}
res = num1 / num2;
@ -180,10 +175,10 @@ float calculate(float num1, char op, float num2, int *error) {
* 2. Predpokladá sa, že riadok nie je prázdny (kontrola prázdnoty sa vykoná v main).
* 3. Pokúsi sa rozparsovať riadok na jednotlivé časti: prvé číslo, operátor, druhé číslo a výsledok.
* 4. Ak parsovanie zlyhá, nastaví output na "CHYBA".
* 5. Ak ide o delenie nulou, tiež nastaví output na "CHYBA".
* 6. Vykoná operáciu a porovná vypočítaný výsledok so zadaným výsledkom s toleranciou EPSILON.
* 5. Vykoná operáciu a porovná vypočítaný výsledok so zadaným výsledkom s toleranciou EPSILON.
* - Ak sa výsledok zhoduje, nastaví output na "OK".
* - Ak sa výsledok nezhoduje, nastaví output na "ZLE".
* 6. V prípade delenia nulou, keď calculate vráti chybu, program nastaví output na "ZLE".
*
* Parametre:
* - line: Vstupný riadok (napr. "10.0 / 2.0 = 5.0").
@ -209,16 +204,11 @@ void process_line(const char *line, char *output, size_t output_size) {
return;
}
// Overenie delenia nulou: ak ide o delenie a menovateľ je nulový, nastane chyba
if (op == '/' && fabs(num2) < EPSILON) {
snprintf(output, output_size, "CHYBA");
return;
}
int calcError = 0;
float calculatedResult = calculate(num1, op, num2, &calcError);
if (calcError) {
snprintf(output, output_size, "CHYBA");
// V prípade delenia nulou (alebo inej chyby v calcultion) vypíšeme "ZLE"
snprintf(output, output_size, "ZLE");
return;
}
@ -270,4 +260,4 @@ int main(int argc, char *argv[]) {
}
return 0;
}
}