From 272be6c4b25d427f88d5e607b32d1f72b2d2ee8e Mon Sep 17 00:00:00 2001 From: ak643du Date: Wed, 27 Mar 2024 14:44:36 +0100 Subject: [PATCH] Initialization# --- a1/program.c | 93 ++++++++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 43 deletions(-) diff --git a/a1/program.c b/a1/program.c index ec8c068..cdddc3f 100644 --- a/a1/program.c +++ b/a1/program.c @@ -8,55 +8,62 @@ int main() { double num1, num2, result, expected_result; char op; - // Read the input line - fgets(line, sizeof(line), stdin); - - // Remove any spaces between symbols - for (int i = 0; line[i] != '\0'; i++) { - if (isspace(line[i])) { - for (int j = i; line[j] != '\0'; j++) { - line[j] = line[j + 1]; - } - i--; // Move back one step to recheck the current character + while (fgets(line, sizeof(line), stdin) != NULL) { + if (line[0] == '\n') { + // Stop when the user enters a blank line + break; } - } - // Parse the line - sscanf(line, "%lf%c%lf=%lf", &num1, &op, &num2, &expected_result); + num1 = num2 = result = 0; + op = '\0'; - // Check if the input is valid - if (op != '+' && op != '-' && op != '*' && op != '/') { - printf("CHYBA\n"); - return 1; - } + // Remove any spaces between symbols + for (int i = 0; line[i] != '\0'; i++) { + if (isspace(line[i])) { + for (int j = i; line[j] != '\0'; j++) { + line[j] = line[j + 1]; + } + i--; // Move back one step to recheck the current character + } + } - // Check for division by zero - if (op == '/' && num2 == 0) { - printf("ZLE\n"); - return 0; - } + // Parse the line + sscanf(line, "%lf%c%lf=%lf", &num1, &op, &num2, &expected_result); - // Perform the calculation - switch (op) { - case '+': - result = num1 + num2; - break; - case '-': - result = num1 - num2; - break; - case '*': - result = num1 * num2; - break; - case '/': - result = num1 / num2; - break; - } + // Check if the input is valid + if (op != '+' && op != '-' && op != '*' && op != '/') { + printf("CHYBA\n"); + continue; + } - // Check if the result is correct - if (result == expected_result) { - printf("OK\n"); - } else { - printf("ZLE\n"); + // Check for division by zero + if (op == '/' && num2 == 0) { + printf("ZLE\n"); + continue; + } + + // Perform the calculation + switch (op) { + case '+': + result = num1 + num2; + break; + case '-': + result = num1 - num2; + break; + case '*': + result = num1 * num2; + break; + case '/': + result = num1 / num2; + break; + } + + // Check if the result is correct + if (result == expected_result) { + printf("OK\n"); + } else { + printf("ZLE\n"); + } } return 0;