Не получается "printf" - C (СИ)
Формулировка задачи:
Числа Люка определяются так: первое число равно 1, второе равно 3,
каждое следующее равно сумме двух предыдущих. Составить программу,
которая находит сумму первых k чисел Люка (k – задается пользователем).
Определить количество первых чисел Люка, таких, что значение их
суммы не превышает диапазона типа int (long int). Вывести в виде
таблицы данное значение суммы и три предыдущих значения суммы (с
соответствующими количествами чисел Люка).
Мой код:
Проблема заключается в том,что не могу понять,как вызвать printf чтобы определить количество первых чисел Люка, таких, что значение их
суммы не превышает диапазона типа int (long int).Пробовал много разных способов (и в цикле писал,и вне цикла),но она либо показывает текущее значение "k",либо показывает значение i (k+1).
#include<stdio.h> #include<limits.h> main () { int k, i, zero, one=1, two=3; long int sum = 0; printf("Input k="); scanf("%d", &k); for( i=1; i <= k ; i++) { sum = one + two; zero = one; one = two; two = sum; } printf("sum=%d\n", sum); printf("One=%d Two=%d Three=%d\t",zero , one, two); return 0; }
Решение задачи: «Не получается "printf"»
textual
Листинг программы
#include<stdio.h> #include <stdlib.h> int main () { int k, i, x1, x2, x3, z = 100; double one=1, two=3, sum = 0, y1, y2, y3; printf("Input k = "); scanf("%d", &k); for( i = 3; i <= k ; ++i) { sum = one + two; if ( sum > 2147483647){ if(i < z + 2) printf("Ne prevyshaet diapazona int %d chisel Luka\n", i - 1); z = i - 1; } one = two; two = sum; if(i == k - 3){ x3 = i; y3 = sum; } if(i == k - 2){ x2 = i; y2 = sum; } if(i == k - 1){ x1 = i; y1 = sum; } } printf("Chislo Luka = %d , summa = %e\n", k, sum); printf("Chislo Luka = %d , summa = %e\n", x1, y1); printf("Chislo Luka = %d , summa = %e\n", x2, y2); printf("Chislo Luka = %d , summa = %e\n", x3, y3); return 0; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdlib.h
- Объявляются переменные:
- k, i, x1, x2, x3 - целочисленные переменные;
- z - целочисленная переменная со значением 100;
- one, two, sum - переменные с плавающей точкой;
- y1, y2, y3 - переменные с плавающей точкой.
- Выводится приглашение для ввода значения переменной k.
- Считывается значение переменной k с помощью функции scanf.
- Организуется цикл for для перебора значений от 3 до k:
- Переменная sum инициализируется как сумма one и two.
- Проверяется условие, что sum не превышает максимального значения для типа int (2147483647).
- Если условие выполняется, то выполняется следующее:
- Если i меньше z + 2, то выводится сообщение об ошибке.
- z присваивается значение i - 1.
- Переменные one, two и sum обновляются.
- Если i равно k - 3, то x3 присваивается значение i, а y3 - значение sum.
- Если i равно k - 2, то x2 присваивается значение i, а y2 - значение sum.
- Если i равно k - 1, то x1 присваивается значение i, а y1 - значение sum.
- По завершении цикла выводится значение k и sum.
- Выводится значение x1 и y1.
- Выводится значение x2 и y2.
- Выводится значение x3 и y3.
- Программа возвращает 0, заканчивая свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д