From 86cce8d6f97726801216c86958f0c0f1e68f26fc Mon Sep 17 00:00:00 2001 From: Marat Izmailov Date: Thu, 17 Oct 2024 11:15:27 +0000 Subject: [PATCH] Update cv3/program.c --- cv3/program.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/cv3/program.c b/cv3/program.c index 9f647d0..e806447 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -11,7 +11,7 @@ struct stack { int size; }; -// Function declarations + void push_stack(struct stack* stack, float value); float pop_stack(struct stack* stack); void print_stack(struct stack* stack); @@ -19,29 +19,29 @@ int is_number(const char* str); int main() { struct stack mystack; - memset(&mystack, 0, sizeof(struct stack)); // Initialize the stack + memset(&mystack, 0, sizeof(struct stack)); char input[50]; while (1) { printf("Enter a number or an operator (+, -, *, /): "); if (!fgets(input, sizeof(input), stdin)) { - break; // Exit on EOF + break; } - // Remove trailing newline character + input[strcspn(input, "\n")] = 0; - // Check if the input is empty + if (strlen(input) == 0) { printf("no input\n"); break; } if (is_number(input)) { - // Convert input to float and push onto stack + float value = atof(input); push_stack(&mystack, value); } else if (strlen(input) == 1 && strchr("+-*/", input[0])) { - // Perform operation + if (mystack.size < 2) { fprintf(stderr, "Error: Not enough values in stack.\n"); exit(EXIT_FAILURE); @@ -77,28 +77,28 @@ int main() { exit(EXIT_FAILURE); } - // Print the current stack + print_stack(&mystack); } return 0; } -// Push a value onto the stack + void push_stack(struct stack* stack, float value) { - assert(stack->size < STACK_SIZE); // Ensure there's space in the stack + assert(stack->size < STACK_SIZE); stack->values[stack->size] = value; stack->size += 1; } -// Pop a value from the stack + float pop_stack(struct stack* stack) { - assert(stack->size > 0); // Ensure there's something to pop + assert(stack->size > 0); stack->size -= 1; return stack->values[stack->size]; } -// Print the contents of the stack + void print_stack(struct stack* stack) { for (int i = 0; i < stack->size; i++) { printf("%.2f ", stack->values[i]); @@ -106,7 +106,7 @@ void print_stack(struct stack* stack) { printf("\n"); } -// Check if the input string is a valid number +r int is_number(const char* str) { char* endptr; strtod(str, &endptr);