From 71bc6751f44ca80389b69bbecfe0b53fd289133f Mon Sep 17 00:00:00 2001 From: Oleksandr Hryshchenko Date: Fri, 22 Oct 2021 11:11:04 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB(?= =?UTF-8?q?=D0=B0)=20=D0=BD=D0=B0=20'cv3/program.c'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cv3/program.c | 121 +++++++++++++++++++++++++------------------------- 1 file changed, 60 insertions(+), 61 deletions(-) diff --git a/cv3/program.c b/cv3/program.c index 2356201..80cc3da 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -11,74 +11,73 @@ int currentlyInBuffer = 0; bool calculatorLogic(char buffer[SIZE][SIZE]){ if(isdigit(buffer[currentlyInBuffer][0])){ - if(currentlyInBuffer == 9) { - printf("full stack\n"); - return false; - } - for(int i = 0; i <= currentlyInBuffer; i++){ - if(i == currentlyInBuffer) - printf("%0.2f \n", roundf(atof(buffer[i])*100)/100); - else - printf("%0.2f ", roundf(atof(buffer[i])*100)/100); - } - return true; - } - else if(strchr("+-/*", buffer[currentlyInBuffer][0]) != NULL){ - if(currentlyInBuffer < 2){ - printf("not enough operands\n"); - return false; - } + if(currentlyInBuffer == 9) { + printf("full stack\n"); + return false; + } + for(int i = 0; i <= currentlyInBuffer; i++){ + if(i == currentlyInBuffer) + printf("%0.2f \n", roundf(atof(buffer[i])*100)/100); + else + printf("%0.2f ", roundf(atof(buffer[i])*100)/100); + } + return true; + } + else if(strchr("+-/*", buffer[currentlyInBuffer][0]) != NULL){ + if(currentlyInBuffer < 2){ + printf("not enough operands\n"); + return false; + } - double temporaryDecimal = 0; + double temporaryDecimal = 0; - switch(buffer[currentlyInBuffer][0]){ - case '+': - temporaryDecimal = round((atof(buffer[currentlyInBuffer-1]) + atof(buffer[currentlyInBuffer-2]))*100)/100; - break; - case '-': - temporaryDecimal = round((atof(buffer[currentlyInBuffer-1]) - atof(buffer[currentlyInBuffer-2]))*100)/100; - break; - case '*': - temporaryDecimal = round((atof(buffer[currentlyInBuffer-1]) * atof(buffer[currentlyInBuffer-2]))*100)/100; - break; - case '/': - if(atof(buffer[currentlyInBuffer-2]) == 0.0) - printf("division by zero\n"); - else - temporaryDecimal = round((atof(buffer[currentlyInBuffer-1]) / atof(buffer[currentlyInBuffer-2]))*100)/100; - } + switch(buffer[currentlyInBuffer][0]){ + case '+': + temporaryDecimal = round((atof(buffer[currentlyInBuffer-2]) + atof(buffer[currentlyInBuffer-1]))*100)/100; + break; + case '-': + temporaryDecimal = round((atof(buffer[currentlyInBuffer-2]) - atof(buffer[currentlyInBuffer-1]))*100)/100; + break; + case '*': + temporaryDecimal = round((atof(buffer[currentlyInBuffer-2]) * atof(buffer[currentlyInBuffer-1]))*100)/100; + break; + case '/': + if(atof(buffer[currentlyInBuffer-1]) == 0.0) + printf("division by zero\n"); + else + temporaryDecimal = round((atof(buffer[currentlyInBuffer-2]) / atof(buffer[currentlyInBuffer-1]))*100)/100; + } - for(int i = currentlyInBuffer-3; currentlyInBuffer > i; currentlyInBuffer--) - memset(buffer[currentlyInBuffer], SIZE, '\0'); + for(int i = currentlyInBuffer-3; currentlyInBuffer > i; currentlyInBuffer--) + memset(buffer[currentlyInBuffer], SIZE, '\0'); - gcvt(temporaryDecimal, 10, buffer[currentlyInBuffer]); + gcvt(temporaryDecimal, 10, buffer[currentlyInBuffer++]); - for(int i = 0; i <= currentlyInBuffer; i++){ - if(i == currentlyInBuffer) - printf("%0.2f \n", roundf(atof(buffer[i]) * 100) / 100); - else - printf("%0.2f ", roundf(atof(buffer[i]) * 100) / 100); - } + for(int i = 0; i <= currentlyInBuffer; i++){ + if(i == currentlyInBuffer) + printf("%0.2f \n", roundf(atof(buffer[i]) * 100) / 100); + else + printf("%0.2f ", roundf(atof(buffer[i]) * 100) / 100); + } - return true; - } - else{ - printf("bad input\n"); - } - } + return true; + } + else{ + printf("bad input\n"); + } +} - int main() { - char buffer[SIZE][SIZE]; - for(int i = 0; i < SIZE; i++) - memset(buffer[i], '\0', SIZE); +int main() { + char buffer[SIZE][SIZE]; + for(int i = 0; i < SIZE; i++) + memset(buffer[i], '\0', SIZE); - for(; fgets(buffer[currentlyInBuffer], SIZE, stdin); currentlyInBuffer++) - if(!calculatorLogic(buffer)) - return 0; + for(; fgets(buffer[currentlyInBuffer], SIZE, stdin); currentlyInBuffer++) + if(!calculatorLogic(buffer)) + return 0; - if(buffer[currentlyInBuffer][0] == '\0') - printf("no input\n"); + if(buffer[currentlyInBuffer][0] == '\0') + printf("no input\n"); - return 0; - } - \ No newline at end of file + return 0; +} \ No newline at end of file