diff --git a/cv3/program.c b/cv3/program.c index be0a2cd..b592106 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -44,8 +44,9 @@ void print_stack(struct stack *s) { int read(struct stack *s) { char temp[100]; + // Читаємо рядок з вводу if (fgets(temp, sizeof(temp), stdin) == NULL) { - return 0; + return 0; // Помилка при читанні } // Перевірка на пустий рядок @@ -54,27 +55,32 @@ int read(struct stack *s) { return 1; // Повертаємо 1, щоб продовжити цикл } + // Завершення програми if (strcmp(temp, "end\n") == 0) { - return 0; + return 0; } float value; int scan = sscanf(temp, "%f", &value); + // Якщо це число if (scan == 1) { push_stack(s, value); print_stack(s); // Виводимо стек після додавання } else { + // Якщо це оператор switch (temp[0]) { case '+': case '-': case '*': case '/': { + // Перевірка на недостатню кількість значень у стеку if (s->size < 2) { - printf("Not enough values in the stack for operation! Exiting program.\n"); + printf("no input\n"); exit(1); // Вихід з програми при недостатніх значеннях } - float b = pop_stack(s); // Спочатку витягуємо значення + + float b = pop_stack(s); // Витягуємо значення float a = pop_stack(s); float result; @@ -97,11 +103,10 @@ int read(struct stack *s) { default: printf("Invalid input. Please enter a number or an operator. Exiting program.\n"); exit(1); // Вихід з програми при невірному введенні - break; } } - return 1; + return 1; // Продовжуємо цикл } int main() {