Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Easycore
0 / 0 / 0
Регистрация: 01.10.2017
Сообщений: 14
1

Числа Люка определяются так: первое число равно 1, второе равно 3, каждое следующее равно сумме двух предыдущих. Состави

12.11.2017, 23:02. Просмотров 239. Ответов 2
Метки нет (Все метки)

Задание
Числа Люка определяются так: первое число равно 1, второе равно 3,
каждое следующее равно сумме двух предыдущих. Составить программу,
которая находит сумму первых k чисел Люка (k – задается пользователем).
Определить количество первых чисел Люка, таких, что значение их
суммы не превышает диапазона типа int (long int). Вывести в виде
таблицы данное значение суммы и три предыдущих значения суммы (с
соответствующими количествами чисел Люка).

Программа работает как надо
Вот код. НО

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <limits.h>
long v,sum1,sum2,sum3,sum4,sum5;
int k,c;
int main (void) {
int a1 = 1, a2 = 1, b1 = 3, b2 = 3;
unsigned long d = 2147483647;
printf("input k=");
scanf("%d",&k);
int f = 1, g = 0;
while (f <= k){
if (f == 1){
c = 1;
}
if (f == 2){
c = 3;
}
if (f > 2){
c = a1 + b1;
a1 = b1;
b1 = c;
}
g = g + c;
c = 0;
f++;
 
}
int j = 2;
while (v <= d) {
v = a2 + b2;
a2 = b2;
b2 = v;
j++;
sum1 = sum2;
sum2 = sum3;
sum3 = sum4;
sum4 = sum5;
sum5 = v;
};
 
printf("Sum of k: %li\n Num Sum\n %d %lu\n %d %lu\n %d %lu\n %d %lu\n",g,j-1,sum4,j-2,sum3,j-3,sum2,j-4,sum1);
return 0;
}


?Вопрос?
Когда я меняю unsigned long d = 2147483647; на long int d = LONG_MAX; и выводы переменных %lu на %li программа перестаёт работать
Почему так???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2017, 23:02
Ответы с готовыми решениями:

Создать массив, в котором каждое значение равно корню квадратному из произведения предшествующих элементов
С одномерным массивом, состоящим из n вводимых с клавиатуры целых элементов...

Вывести новый массив значений, в котором каждое значение равно наименьшему из трех соседних
В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов,...

Вывести новый массив, в котором каждое значение равно корню из произведения всех предшествующих элементов
С одномерным массивом, состоящим из n вводимых с клавиатуры целых элементов...

Вывести последовательность так, чтобы количество двузначных чисел было равно X
Выручайте! Нужно на Си решить задачку такую: Есть число X Есть...

Что значит число равно другому числу с какой-то точностью?
Есть массив. Также вводятся вещественные числа x и e (e&gt;0). Если элемент...

2
stake-k26
440 / 354 / 287
Регистрация: 25.04.2016
Сообщений: 1,051
13.11.2017, 09:51 2
Цитата Сообщение от Easycore Посмотреть сообщение
Почему так???
Быть может потому, что LONG_MAX зависит от конкретной системы?

Из википедии: "Значения зависят от специфики реализации, но могут быть не ниже диапазона, определенного для конечного значения в удобной реализации Си."

Все упирается в эту самую "удобную" реализацию. Вообще с этими максимальными значениями постоянная грусть-печаль-тоска, я уже предпочитаю брать число байт через sizeof, а потом вычислять максимум возведением двойки в нужную степень с вычетом 1.
1
Байт
Эксперт C
18955 / 12167 / 2542
Регистрация: 24.12.2010
Сообщений: 24,809
13.11.2017, 10:35 3
Easycore, скорее всего дело в том, что v перепрыгивает LONG_MAX и ... становится отрицательным!

Не по теме:

И просьба. Оборачивайте код тегами. Умеете? Читать и анализировать будет намного приятнее.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2017, 10:35

Массив целых. Удалить элементы в которых число десятков равно 0
Задать массив целых, и удалить из него все элементы, у которых количество...

Указать те числа, произведение цифр которых равно заданному числу k
Среди всех n-значных чисел указать те, произведение цифр которых равна данному...

Повтор ввода числа, если оно меньше либо равно нулю
Если при вводе число меньше или равно 0 , то повторить его ввод заново ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru