This commit is contained in:
Deinerovych 2024-10-16 22:16:18 +02:00
parent 15104fb2f3
commit c45f8163d5

View File

@ -33,7 +33,7 @@ float calculator(float n1, float n2, char operation) {
return n1 / n2; return n1 / n2;
} else { } else {
printf("division by zero\n"); printf("division by zero\n");
return n1; // Возвращаем первое число, чтобы стек не был нарушен return n1;
} }
} }
return 0; return 0;
@ -43,7 +43,7 @@ void push(float number) {
if (stack_top < STACK_SIZE - 1) { if (stack_top < STACK_SIZE - 1) {
stack[++stack_top] = number; stack[++stack_top] = number;
} else { } else {
printf("Error: stack overflow\n"); printf("stack overflow\n");
} }
} }
@ -51,12 +51,13 @@ float pop() {
if (stack_top >= 0) { if (stack_top >= 0) {
return stack[stack_top--]; return stack[stack_top--];
} else { } else {
printf("Error: stack is empty\n"); printf("stack is empty\n");
return 0; return 0;
} }
} }
void print_stack() { void print_stack() {
if (stack_top >= 0) {
for (int i = 0; i <= stack_top; i++) { for (int i = 0; i <= stack_top; i++) {
printf("%.2f", stack[i]); printf("%.2f", stack[i]);
if (i < stack_top) { if (i < stack_top) {
@ -65,6 +66,7 @@ void print_stack() {
} }
printf("\n"); printf("\n");
} }
}
int main() { int main() {
char arr[50]; char arr[50];
@ -93,16 +95,13 @@ int main() {
float result = calculator(n1, n2, operation); float result = calculator(n1, n2, operation);
if (!(operation == '/' && n2 == 0)) { if (!(operation == '/' && n2 == 0)) {
push(result); push(result);
}
print_stack(); print_stack();
} }
} }
// Проверяем, нужно ли выводить "no input"
if (stack_top == -1) {
printf("no input\n");
} }
printf("no input\n");
return 0; return 0;
} }