Update cv3/program.c
This commit is contained in:
		
							parent
							
								
									f53d8562dc
								
							
						
					
					
						commit
						4cbd8c399f
					
				| @ -5,32 +5,32 @@ | ||||
| 
 | ||||
| #define STACK_SIZE 10 | ||||
| 
 | ||||
| // Структура стека
 | ||||
| 
 | ||||
| struct stack { | ||||
|     float values[STACK_SIZE]; | ||||
|     int size; | ||||
| }; | ||||
| 
 | ||||
| // Функция для инициализации стека
 | ||||
| 
 | ||||
| void init_stack(struct stack* s) { | ||||
|     memset(s, 0, sizeof(struct stack)); | ||||
| } | ||||
| 
 | ||||
| // Функция для добавления значения в стек
 | ||||
| 
 | ||||
| void push_stack(struct stack* s, float value) { | ||||
|     assert(s->size < STACK_SIZE); // Проверка переполнения стека
 | ||||
|     assert(s->size < STACK_SIZE);  | ||||
|     s->values[s->size] = value; | ||||
|     s->size += 1; | ||||
| } | ||||
| 
 | ||||
| // Функция для извлечения значения из стека
 | ||||
| 
 | ||||
| float pop_stack(struct stack* s) { | ||||
|     assert(s->size > 0); // Проверка на наличие элементов в стеке
 | ||||
|     assert(s->size > 0);  | ||||
|     s->size -= 1; | ||||
|     return s->values[s->size]; | ||||
| } | ||||
| 
 | ||||
| // Функция для вывода содержимого стека
 | ||||
| 
 | ||||
| void print_stack(struct stack* s) { | ||||
|     for (int i = 0; i < s->size; i++) { | ||||
|         printf("%.2f ", s->values[i]); | ||||
| @ -43,25 +43,27 @@ int main() { | ||||
|     init_stack(&mystack); | ||||
| 
 | ||||
|     char input[256]; | ||||
|     int has_input = 0;  | ||||
| 
 | ||||
|     while (1) { | ||||
|         printf("Zadajte číslo alebo operáciu (+, -, *, /): "); | ||||
|         if (!fgets(input, sizeof(input), stdin)) { | ||||
|             break; // Выход при ошибке ввода
 | ||||
|             break;  | ||||
|         } | ||||
| 
 | ||||
|         // Удаляем символ новой строки, если он есть
 | ||||
|          | ||||
|         input[strcspn(input, "\n")] = 0; | ||||
| 
 | ||||
|         // Проверка, является ли ввод числом
 | ||||
|          | ||||
|         char* endptr; | ||||
|         float value = strtof(input, &endptr); | ||||
|         if (endptr != input) { // Если это число
 | ||||
|         if (endptr != input) {  | ||||
|             push_stack(&mystack, value); | ||||
|             has_input = 1;  | ||||
|             print_stack(&mystack); | ||||
|             continue; | ||||
|         } | ||||
| 
 | ||||
|         // Если это не число, проверяем на операции
 | ||||
|          | ||||
|         if (strcmp(input, "+") == 0) { | ||||
|             if (mystack.size < 2) { | ||||
|                 printf("Chyba: Nedostatok hodnôt v zásobníku.\n"); | ||||
| @ -108,8 +110,8 @@ int main() { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     // Если не было введено ни одного значения, выводим сообщение
 | ||||
|     if (mystack.size == 0) { | ||||
|      | ||||
|     if (!has_input) { | ||||
|         printf("no input\n"); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user