diff --git a/cv3/program.c b/cv3/program.c index c6da872..384b6d8 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -56,11 +56,20 @@ float pop() { } } +void print_stack() { + for (int i = 0; i <= stack_top; i++) { + if (i > 0) { + printf(" "); + } + printf("%.2f", stack[i]); + } + printf("\n"); +} + int main() { char arr[50]; char *pend; stack_top = -1; - bool first_output = true; while (fgets(arr, 50, stdin)) { if (arr[0] == '\n' || arr[0] == EOF) { @@ -70,17 +79,10 @@ int main() { if (is_number(arr)) { float number = strtof(arr, &pend); push(number); - if (!first_output) { - printf(" "); - } - printf("%.2f", number); - first_output = false; + print_stack(); // Печать стека после ввода числа } else if (is_operation(arr)) { if (stack_top < 1) { - if (!first_output) { - printf("\n"); - } printf("no input\n"); return 0; } @@ -90,21 +92,14 @@ int main() { char operation = arr[0]; float result = calculator(n1, n2, operation); push(result); - if (!first_output) { - printf(" "); - } - printf("%.2f", result); - first_output = false; + print_stack(); // Печать стека после выполнения операции } } if (stack_top == 0) { - if (!first_output) { - printf(" "); - } - printf("\n%.2f\n", pop()); + print_stack(); // Печать оставшегося элемента } else { - printf("\nno input\n"); + printf("no input\n"); } return 0;