103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
1

Найти целое число k-порядковый номер числа фибоначчи

23.04.2013, 15:58. Показов 2953. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано целое число N(>1), являющееся числом Фибоначчи: N=Fk(число Фибоначчи Fk определяется следующим образом: F1=1 f2=1 Fk=Fk-2+Fk-1, K=3, 4 ..). Найти целое число k-порядковый номер числа фибоначчи.
Просьба написать через printf и scanf и по возможности написать пояснение для каждой строки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2013, 15:58
Ответы с готовыми решениями:

Проверить есть ли заданные числа в последовательности Фибоначчи, и найти их порядковый номер
В функцию с переменным числом параметров передаются целые числа. Проверить эсть ли эти числа в...

Найти первое число последовательности большее, чем X, вывести порядковый номер числа и его величину
Дано число X и последовательность (1,1 + 1/2, 1+1/2+1/3...) , найти первое число этой...

Дано число. Разделить каждую цифру десятичной записи этого числа на его порядковый номер. Полученное число нап
2.Дано число. Разделить каждую цифру десятичной записи этого числа на его порядковый номер....

Дано число. Разделить каждую цифру числа на его порядковый номер
Как записать именно деление каждого числа на порядковые номера. могут быть ведь как, например, 111,...

17
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
23.04.2013, 16:01 2
Xo6ut, генерируете последовательность и в ходе выполнения сравниваете его с вашим числом, а так же накапливаете счётчик, при совпадении значений выводите счётчик, если сгенерированное значение больше вашего завершаете итерацию.
0
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 91
23.04.2013, 16:08 3
Пишите обычную функцию для чисел Фибоначчи, и в момент совпадения с искомым числом выводите его на экран. Когда нашли число-выход из программы
0
164 / 120 / 46
Регистрация: 17.03.2013
Сообщений: 284
23.04.2013, 16:11 4
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
#include <iostream>
 
int get_fib(int n); // [url]https://www.cyberforum.ru/cpp-beginners/thread73752.html[/url]
int get_number_Fibonacci_numbers(int numb);
 
int main()
{
    std::cout << "Enter number: ";
 
    int number;
 
    std::cin >> number;
 
    std::cout << "Serial number: " << get_number_Fibonacci_numbers(number);
 
    return 0;
}
 
int get_fib(int n) 
{ 
     if(n==1) 
         return 1;
 
     if(n==2) 
         return 1;
 
     return get_fib(n-1) + get_fib(n-2);
};
 
int get_number_Fibonacci_numbers(int numb)
{
    for(int i = 1; ; ++i)
        if(get_fib(i) == numb)
            return i;
}
если всё работает, отзыв вот сюда: [ссылка удалена]

Заранее Спасибо .
2
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
23.04.2013, 16:14  [ТС] 5
Cпасибо конечно за проделанную работу, но я же просил через printf и scanf(
0
164 / 120 / 46
Регистрация: 17.03.2013
Сообщений: 284
23.04.2013, 16:16 6
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
#include <iostream>
 
int get_fib(int n); // [url]https://www.cyberforum.ru/cpp-beginners/thread73752.html[/url]
int get_number_Fibonacci_numbers(int numb);
 
int main()
{
    std::cout << "Enter number: ";
 
    int number;
 
    scanf("%d",&number);
 
    printf("Serial number: %d", get_number_Fibonacci_numbers(number));
 
    return 0;
}
 
int get_fib(int n) 
{ 
     if(n==1) 
         return 1;
 
     if(n==2) 
         return 1;
 
     return get_fib(n-1) + get_fib(n-2);
};
 
int get_number_Fibonacci_numbers(int numb)
{
    for(int i = 1; ; ++i)
        if(get_fib(i) == numb)
            return i;
}
0
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
23.04.2013, 16:17 7
Xo6ut,
C++
1
std::cout << "Serial number: " << get_number_Fibonacci_numbers(number);
to
C++
1
printf("Serial number:  %d", get_number_Fibonacci_numbers(number));
0
164 / 120 / 46
Регистрация: 17.03.2013
Сообщений: 284
23.04.2013, 16:18 8
проверти правильность работы алгоритма, если есть замечания напишите с примерами.
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
23.04.2013, 16:22 9
А проще всего воспользоваться формулой:
C++
1
nF = floor(log(F*sqrt(5.)+0.5) / log(((1. + sqrt(5.)/2.))));
вроде так. Если что - формула из вики.
2
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
23.04.2013, 16:24 10
nonedark2008, забавно, не знал, отдельное спасибо
0
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
23.04.2013, 16:29  [ТС] 11
Цитата Сообщение от nonedark2008 Посмотреть сообщение
А проще всего воспользоваться формулой:nF = floor(log(F*sqrt(5.)+0.5) / log(((1. + sqrt(5.)/2.))));
вроде так. Если что - формула из вики.
Т.е можно просто формулу ввести и не придется все это писать?
0
164 / 120 / 46
Регистрация: 17.03.2013
Сообщений: 284
23.04.2013, 16:36 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
#include <math.h>
 
int main()
{
    std::cout << "Enter number: ";
 
    int number;
 
    scanf("%d",&number);
 
    printf("Serial number: %f", floor( log(number * sqrt(5.)+0.5) / log( (1. + sqrt(5.) ) / 2.) ));
 
    return 0;
}
1
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
23.04.2013, 16:37 13
Да, немного в формуле ошибся.
Будет так:
C++
1
nF = floor( log(F * sqrt(5.)+0.5) / log( (1. + sqrt(5.) ) / 2.) )
1
GetVariable
23.04.2013, 16:38
  #14

Не по теме:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
#include <math.h>
 
int main()
{
    std::cout << "Enter number: ";
 
    int number;
 
    scanf("%d",&number);
 
    printf("Serial number: %f", floor( log(number * sqrt(5.)+0.5) / log( (1. + sqrt(5.) ) / 2.) ));
 
    return 0;
}

1
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
23.04.2013, 16:40  [ТС] 15
А можно вместо:
C++
1
2
3
#include <iostream>
#include <cmath>
#include <math.h>
ввести:
C++
1
2
#include <stdio.h>
#include <conio.h>
?
0
164 / 120 / 46
Регистрация: 17.03.2013
Сообщений: 284
23.04.2013, 16:41 16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <conio.h>
#include <cmath>
 
int main()
{
    printf("Enter number: ");
 
    int number;
 
    scanf("%d",&number);
 
    printf("Serial number: %f", floor( log(number * sqrt(5.)+0.5) / log( (1. + sqrt(5.) ) / 2.) ));
 
    return 0;
}
1
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
23.04.2013, 16:48  [ТС] 17
И последний вопрос(надеюсь) за что отвечает #include <cmath>?
0
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 114
23.04.2013, 17:11 18
Цитата Сообщение от Xo6ut Посмотреть сообщение
И последний вопрос(надеюсь) за что отвечает #include <cmath>?
Математическая библиотека.
Пользуйтесь гуглом !
0
23.04.2013, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2013, 17:11
Помогаю со студенческими работами здесь

Дано целое число (N>0) найти наибольшее целое числа k, квадрат которого не превосходит N:k^2<=N
Помогите пожалуйста сделать задачу. Нужно сделать на С++. Вот условие: Дано целое число (N&gt;0)...

Найти порядковый номер числа
помогите решить задачу Дано 10 целых чисел.Найти порядковый номер второго положительного числа

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

Найти порядковый номер наибольшего по значению числа
Помогите пожалуйста. Нужно написать программу на C++ в программе Borland C++ или C-Free. Сделать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru