diff --git a/du3/program.c b/du3/program.c index 1a851bb..871ef75 100644 --- a/du3/program.c +++ b/du3/program.c @@ -67,16 +67,40 @@ int main() num2Temp[0] = '\0'; resultTemp[0] = '\0'; bool foundEqualSign = false; - bool isNegativeSign = false; char op1 = 'N'; //N = 'None/NIC' + for (int i = 0; strBuffer[i] != '\0'; i++) { + bool isNegativeSign = false; + if (isspace(strBuffer[i]) != 0) { continue; } + else if (strBuffer[i] == '-') + { + //kontrola - zistenie, ze ci znak '-' symbolizuje zapornu hodnotu (-456) alebo arit. operaciu minus + //zistujeme to na zaklade toho, kde sme v riadku (ak sme na zaciatku num1, num2 alebo vyslednehoCisla, tak sa jedna o minusove znamienko) + if (op1 == 'N' && strlen(num1Temp) == 0) + { + isNegativeSign = true; + } + else if (op1 != 'N' && !foundEqualSign && strlen(num2Temp) == 0) + { + isNegativeSign = true; + } + else if (foundEqualSign && strlen(resultTemp) == 0) + { + isNegativeSign = true; + } + } + else + { + isLineInvalid = true; + break; + } else if (isdigit(strBuffer[i]) != 0 || strBuffer[i] == '.') { //cislo sa bude zapisovat podla toho, kde sme pri citani riadku... @@ -105,34 +129,13 @@ int main() else if (strBuffer[i] == '+' || strBuffer[i] == '-' || strBuffer[i] == '/' || strBuffer[i] == '*') { //predbezna kontrola, ak uz operator mame tak vyhod chybu pri druhom pokuse o nacitanie + //taktiez, ak sa nasiel minusovy znak tu tak to moze byt len arit. znamienko if (op1 != 'N') { isLineInvalid = true; } op1 = strBuffer[i]; } - else if (strBuffer[i] == '-') - { - //kontrola - zistenie, ze ci znak '-' symbolizuje zapornu hodnotu (-456) alebo arit. operaciu minus - //zistujeme to na zaklade toho, kde sme v riadku (ak sme na zaciatku num1, num2 alebo vyslednehoCisla, tak sa jedna o minusove znamienko) - if (op1 == 'N' && strlen(num1Temp) == 0) - { - isNegativeSign = true; - } - else if (op1 != 'N' && !foundEqualSign && strlen(num2Temp) == 0) - { - isNegativeSign = true; - } - else if (foundEqualSign && strlen(resultTemp) == 0) - { - isNegativeSign = true; - } - } - else - { - isLineInvalid = true; - break; - } }