From f53d8562dc14877c87d81601cac0a908f8c4775f Mon Sep 17 00:00:00 2001 From: Marat Izmailov Date: Thu, 17 Oct 2024 11:41:41 +0000 Subject: [PATCH] Update cv3/program.c --- cv3/program.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/cv3/program.c b/cv3/program.c index 6acbf18..44f8501 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -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]); @@ -46,22 +46,22 @@ int main() { 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); print_stack(&mystack); continue; } - + // Если это не число, проверяем на операции if (strcmp(input, "+") == 0) { if (mystack.size < 2) { printf("Chyba: Nedostatok hodnôt v zásobníku.\n"); @@ -108,5 +108,10 @@ int main() { } } + // Если не было введено ни одного значения, выводим сообщение + if (mystack.size == 0) { + printf("no input\n"); + } + return 0; }