Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Xo6ut
101 / 88 / 75
Регистрация: 04.11.2011
Сообщений: 1,775
1

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

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

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

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

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

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

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

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

17
Ternsip
664 / 192 / 29
Регистрация: 10.05.2012
Сообщений: 595
23.04.2013, 16:01 2
Xo6ut, генерируете последовательность и в ходе выполнения сравниваете его с вашим числом, а так же накапливаете счётчик, при совпадении значений выводите счётчик, если сгенерированное значение больше вашего завершаете итерацию.
0
Troll1
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 91
23.04.2013, 16:08 3
Пишите обычную функцию для чисел Фибоначчи, и в момент совпадения с искомым числом выводите его на экран. Когда нашли число-выход из программы
0
GetVariable
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
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]http://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
Xo6ut
101 / 88 / 75
Регистрация: 04.11.2011
Сообщений: 1,775
23.04.2013, 16:14  [ТС] 5
Cпасибо конечно за проделанную работу, но я же просил через printf и scanf(
0
GetVariable
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
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]http://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
Ternsip
664 / 192 / 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
GetVariable
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
23.04.2013, 16:18 8
проверти правильность работы алгоритма, если есть замечания напишите с примерами.
0
nonedark2008
1056 / 789 / 222
Регистрация: 28.07.2012
Сообщений: 2,202
23.04.2013, 16:22 9
А проще всего воспользоваться формулой:
C++
1
nF = floor(log(F*sqrt(5.)+0.5) / log(((1. + sqrt(5.)/2.))));
вроде так. Если что - формула из вики.
2
Ternsip
664 / 192 / 29
Регистрация: 10.05.2012
Сообщений: 595
23.04.2013, 16:24 10
nonedark2008, забавно, не знал, отдельное спасибо
0
Xo6ut
101 / 88 / 75
Регистрация: 04.11.2011
Сообщений: 1,775
23.04.2013, 16:29  [ТС] 11
Цитата Сообщение от nonedark2008 Посмотреть сообщение
А проще всего воспользоваться формулой:nF = floor(log(F*sqrt(5.)+0.5) / log(((1. + sqrt(5.)/2.))));
вроде так. Если что - формула из вики.
Т.е можно просто формулу ввести и не придется все это писать?
0
GetVariable
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
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
nonedark2008
1056 / 789 / 222
Регистрация: 28.07.2012
Сообщений: 2,202
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
Xo6ut
101 / 88 / 75
Регистрация: 04.11.2011
Сообщений: 1,775
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
GetVariable
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
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
Xo6ut
101 / 88 / 75
Регистрация: 04.11.2011
Сообщений: 1,775
23.04.2013, 16:48  [ТС] 17
И последний вопрос(надеюсь) за что отвечает #include <cmath>?
0
edw1n
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 114
23.04.2013, 17:11 18
Цитата Сообщение от Xo6ut Посмотреть сообщение
И последний вопрос(надеюсь) за что отвечает #include <cmath>?
Математическая библиотека.
Пользуйтесь гуглом !
0
23.04.2013, 17:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2013, 17:11

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

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

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


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

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

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