Обновить du3/program.c
This commit is contained in:
parent
fa09da2a6d
commit
4254807502
@ -15,11 +15,6 @@
|
||||
*
|
||||
* Parametre:
|
||||
* - line: Reťazec, z ktorého sa má 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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user