From 9867b831a83289d8a8b47d4b7a68c33a86279d98 Mon Sep 17 00:00:00 2001 From: Kozar Date: Sun, 13 Oct 2024 09:25:57 +0000 Subject: [PATCH] Initializacia --- cv3/program.c | 56 ++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/cv3/program.c b/cv3/program.c index ec49735..40e58c0 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -2,54 +2,59 @@ #include #include #include -#include -#define LINE_SIZE 100 #define STACK_SIZE 10 +// Stack structure struct stack { float values[STACK_SIZE]; int size; }; -void print_stack(struct stack* stack) { - for (int i = 0; i < stack->size; i++) { - printf("%.2f ", stack->values[i]); +// Function to print the stack +void print_stack(struct stack* s) { + for (int i = 0; i < s->size; i++) { + printf("%.2f", s->values[i]); + if (i < s->size - 1) { + printf(" "); // Print space between values + } } printf("\n"); } -void push_stack(struct stack* stack, float value) { - if (stack->size >= STACK_SIZE) { +// Function to push a value onto the stack +void push_stack(struct stack* s, float value) { + if (s->size >= STACK_SIZE) { printf("Chyba: zasobnik je plny\n"); exit(1); } - stack->values[stack->size] = value; - stack->size++; + s->values[s->size++] = value; } -float pop_stack(struct stack* stack) { - if (stack->size == 0) { +// Function to pop a value from the stack +float pop_stack(struct stack* s) { + if (s->size == 0) { printf("Chyba: zasobnik je prazdny\n"); exit(1); } - stack->size--; - return stack->values[stack->size]; + return s->values[--s->size]; } +// Check if input is an operator int is_operator(char* input) { return (strcmp(input, "+") == 0 || strcmp(input, "-") == 0 || strcmp(input, "*") == 0 || strcmp(input, "/") == 0); } -void perform_operation(struct stack* stack, char* operator) { - if (stack->size < 2) { +// Perform the operation on the top of the stack +void perform_operation(struct stack* s, char* operator) { + if (s->size < 2) { printf("Chyba: nedostatok operandov\n"); exit(1); } - float b = pop_stack(stack); - float a = pop_stack(stack); + float b = pop_stack(s); + float a = pop_stack(s); float result; if (strcmp(operator, "+") == 0) { @@ -69,20 +74,20 @@ void perform_operation(struct stack* stack, char* operator) { exit(1); } - push_stack(stack, result); + push_stack(s, result); } int main() { - char input[LINE_SIZE]; - float value; + char input[100]; struct stack mystack; - memset(&mystack, 0, sizeof(struct stack)); + mystack.size = 0; - while (fgets(input, LINE_SIZE, stdin) != NULL) { - // Remove trailing newline character - input[strlen(input) - 1] = '\0'; + // Reading input from stdin until EOF or an error occurs + while (fgets(input, sizeof(input), stdin) != NULL) { + input[strlen(input) - 1] = '\0'; // Remove newline character // Try to parse input as a number + float value; if (sscanf(input, "%f", &value) == 1) { push_stack(&mystack, value); } @@ -96,9 +101,10 @@ int main() { return 1; } - // Print stack after each input + // Print stack after each valid input print_stack(&mystack); } + printf("no input\n"); return 0; }