#include #include #include int fib(int n) { if (n < 0) { return -1; } if (n == 0) return 0; if (n == 1) return 1; int a = 0; int b = 1; int c; for (int i = 2; i <= n; i++) { if (b > INT_MAX - a) { return INT_MIN; } c = a + b; a = b; b = c; } return b; } int main(void) { int n; printf("Введите целое неотрицательное n: "); if (scanf("%d", &n) != 1) { fprintf(stderr, "Ошибка ввода: ожидалось целое число.\n"); return EXIT_FAILURE; } int result = fib(n); if (n < 0) { fprintf(stderr, "Ошибка: n должно быть неотрицательным.\n"); return EXIT_FAILURE; } if (result == INT_MIN) { fprintf(stderr, "Ошибка: переполнение при вычислении fib(%d). " "Значение фибоначчи слишком велико для типа int.\n", n); return EXIT_FAILURE; } printf("fib(%d) = %d\n", n, result); return EXIT_SUCCESS; }