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

Не получается "printf"

05.01.2016, 13:55. Просмотров 244. Ответов 1
Метки нет (Все метки)

Числа Люка определяются так: первое число равно 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
#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 чтобы определить количество первых чисел Люка, таких, что значение их
суммы не превышает диапазона типа int (long int).Пробовал много разных способов (и в цикле писал,и вне цикла),но она либо показывает текущее значение "k",либо показывает значение i (k+1).
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2016, 13:55
Ответы с готовыми решениями:

Не получается динамически увеличить массив структур "Отрезок" "Прямоугольник"
Делая следующее задание наткунлся на проблему Определить структуры: отрезок (задан длиной) и...

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись &quot;Двигатель&quot;, которая содержит элементы &quot;Название&quot;, &quot;Мощность&quot;, &quot;Скорость&quot;,...

Таинственный (для меня) printf. Почему печатает "не то"
Всем привет! Есть отлично работающая программа, но я её хочу подправить, соответственно мне надо...

Для чего нужен: printf ("Vvedite massiv \n"); ?
#include &lt;stdafx.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main () { int A, N, M, T, k,...

Что значит 3d вот здесь printf ("%3d", *(x+i);--?
printf (&quot;%.2f&quot;, *(x+i));- здесь я знаю. Два знака после запятой при типах float и double. А,...

1
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
05.01.2016, 20:50 2
kolin2,
1. цикл надо начинать не с i = 1, а с тройки,ибо первое число Люка это 1,второе-3(хотя в теории это 2 1 3 4 и т.д.),а вот третье как раз one + two
2. если число Люка свыше 44,то значения суммы выходят за диапазон int,поэтому сумма ну никак не int
3.по интересующей тебя проблеме в моем коде всё видно вроде
4.твоя строка 18 печатает якобы значения zero, one, two, а реально выводятся на экран one, two, sum - потому что строки 12-14 своё дело сделали уже
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
#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;
}
Добавлено через 46 минут
kolin2, Впрочем,условие задачи скорее всего подразумевает как раз вывод суммы не выходящей за диапазон int, поэтому пиши int и вводи 44
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2016, 20:50

Неправильная работа функции "printf"
#include &lt;stdio.h&gt; int main() { int m = 7; FILE *mnt; mnt = fopen(&quot;string in file.txt&quot;,...

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...

Подсчитать общее количество вхождений в строку символов "А", "a", "B" и "b"
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; main() { int i; int k; ...


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

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

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