From 4b33f0c0916c070d99b1c0251e3e574621513b9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Vl=C4=8Dek?= Date: Thu, 19 Mar 2026 01:05:25 +0000 Subject: [PATCH] Aktualizovat du3/program.c --- du3/program.c | 43 +++++++++++-------------------------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/du3/program.c b/du3/program.c index bffb5ec..77c8c8c 100644 --- a/du3/program.c +++ b/du3/program.c @@ -7,7 +7,7 @@ #define SIZE 128 //kontrola, ze ci vycitane informacie su aritmeticky spravne -//VRACIA: int: -1 (CHYBA), 0 (False), (True) +//VRACIA: int: -1 (CHYBA), 0 (False), 1 (True) float IsArithCorrect(float num1, float num2, char* op, float result) { @@ -62,12 +62,16 @@ int main() for (int i = 0; strBuffer[i] != '\0'; i++) { - if (isspace() != 0) + else if (isspace() != 0) { continue; } - if (isdigit(strBuffer[i]) != 0 || strBuffer[i] == '.') + else if (isdigit(strBuffer[i]) != 0 || strBuffer[i] == '.') { + //cislo sa bude zapisovat podla toho, kde sme pri citani riadku... + //ak nenasiel ani arit. znamienko = cislo patri ku prvemu operandu (num1) + //ak nasiel arit. znamienko ale NIE este symbol '=', tak cislo patri ku druhemu operandu (num2) + //inak ak ma vsetko, tak zvysne nacitane cisla z riadku mozu byt vyluc. metodou len sucastou vysledku if (op1 == 'N') { strncat(num1Temp, &strBuffer[i], 1); @@ -81,15 +85,13 @@ int main() strncat(resultTemp, &strBuffer[i], 1); } } - //ak je to nejaky printable symbol ('*/-,:./), skontroluj ci to nie je artimeticke znamienko alebo desatinna bodka (a udel im vynimku) - //AK NIE, povazuj za riadok neplatny... - if (strBuffer[i] == '=') + else if (strBuffer[i] == '=') { foundEqualSign = true; continue; } - if (strBuffer[i] == '+' || strBuffer[i] == '-' || strBuffer[i] == '/' || strBuffer[i] == '*') + else if (strBuffer[i] == '+' || strBuffer[i] == '-' || strBuffer[i] == '/' || strBuffer[i] == '*') { //predbezna kontrola, ze ci sme doteraz daco vobec nacitavali if (op1 == 'N' || strBuffer[0] == '\0') @@ -98,37 +100,14 @@ int main() } op1 = strBuffer[i]; } - else if (strBuffer[i] == '.') - { - //zisti, kde treba zapisat desatinnu bodku - switch (writeIntoArrayNum) - { - case 1: - strncat(num1Temp, &strBuffer[i], 1); - break; - - case 2: - strncat(num2Temp, &strBuffer[i], 1); - break; - - case 3: - strncat(resultTemp, &strBuffer[i], 1); - break; - } - } - else + else { isLineInvalid = true; break; } - - if (isalpha(strBuffer[i]) != 0) - { - isLineInvalid = true; - break; - } } + float num1 = strtof(num1Temp, &strtofEndPtr); float num2 = strtof(num2Temp, &strtofEndPtr); float resultNum = strtof(resultTemp, &strtofEndPtr);