Обновить 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;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
@ -270,4 +260,4 @@ int main(int argc, char *argv[]) {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user