Initializacia
This commit is contained in:
		
							parent
							
								
									441a06e531
								
							
						
					
					
						commit
						9867b831a8
					
				| @ -2,54 +2,59 @@ | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <assert.h> | ||||
| #include <ctype.h> | ||||
| 
 | ||||
| #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; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user