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

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

12.11.2017, 23:02. Просмотров 1274. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2017, 23:02
Ответы с готовыми решениями:

Даны числа а, b, с. Определить, какое из них равно d. Если ни одно не равно d, то найти max(d-a, d-b, d-c)
1) Даны числа а, b, с. Определить, какое из них равно d. Если ни одно не равно d, то найти max(d-a,...

Массив : каждое число равно сумме двух предыдущих перед ним.
Есть массив на 10 чисел. Нужно попросить человека ввести 2 первых числа, программа должна...

Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее
Задание: Задан числовой массив A(M). Найдите отрезок массива, в котором первое число равно...

Найдите отрезок максимальной длины, в котором первое число равно последнему, второе — предпоследнему
Задан числовой массив длины N . Найдите отрезок максимальной длины, в котором первое число равно...

2
1161 / 707 / 481
Регистрация: 25.04.2016
Сообщений: 1,985
13.11.2017, 09:51 2
Цитата Сообщение от Easycore Посмотреть сообщение
Почему так???
Быть может потому, что LONG_MAX зависит от конкретной системы?

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

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

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2017, 10:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти отрезок массива-палиндром, в котором первое число равно последнему, второе предпоследнему и т.д.
Перевертыши. Дан числовой массив А. Найти отрезок массива максимальной длины, в котором первое...

Найти отрезок массива максимальной длины, в котором первое число равно последнему, второе предпоследнему и т.д.
Задан числовой массив A. Найти отрезок массива максимальной длины, в котором первое число равно...

Число из большого количества цифр равно сумме двух чисел
Здравствуйте! Помогите пожалуйста с задачкой (очень сложная):help:: Вводится число A из n цифр...

В массиве найти отрезок максимальной длины, в котором первое число равно последнему, второе - предпоследнему и т.д. Напечатать характеристики этого от
Помогите ребят!!!!препод задачи задачи для аттестации,сделал фактически все,кроме этой: &quot;В массиве...


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

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

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