Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Student3194
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 6
#1

Числа Фибоначчи.Определение порядкового номера элемента - C++

13.11.2013, 17:39. Просмотров 1104. Ответов 9
Метки нет (Все метки)

Дано положительное число.Найти номер К такого числа Фибоначчи ,что Xк-1<=A<Xк.Протестировать задачу для значений A 4,51,21.

Числа Фибоначчи Х1=1, Х2=1, Х3=2 ,...,Хк=Хк-1 + Хк-2.

По форуму искал подобных задач не нашел.Только кучу задач с определением числа Фибоначчи по его номеру...Помогите пожалуйста ,последняя задача в лабе осталась.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 17:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Числа Фибоначчи.Определение порядкового номера элемента (C++):

Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду Фибоначчи - C++
Помогите с задачкой Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду...

Вывести на экран все числа, номера которых есть числа Фибоначчи - C++
Вывести на экран все числа заданной последовательности, номера которых есть числа Фибоначчи.

Определение номера треугольного числа - C++
Напишите на языке C / C++ программу, определяющую номер треугольного числа. Вход: одно целое (возможно, со знаком «плюс» и символом...

Распечатать те элементы порядковые номера которых - числа Фибоначчи; определить количество перемен знаков - C++
в заданном целочисленном массиве распечатать те элементы,порядковые номера которых - числа Фибоначчиб а также определить количество перемен...

Запрос вывода порядкового номера каждой записи таблицы - C++
Если кто знает, подскажите, как сформулировать запрос SQL Компонента Query1 чтобы вывести порядковый номер каждой записи таблицы? ...

В зависимости от порядкового номера месяца вывести на экран его название. - C++
Помогите, пожалуйста, с решением задачи в С++. Составить программу, которая в зависимости от порядкового номера месяца выводит на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ПерС
371 / 287 / 89
Регистрация: 05.11.2013
Сообщений: 820
Записей в блоге: 5
Завершенные тесты: 1
13.11.2013, 17:44 #2
числа Фибоначчи на С++
0
Student3194
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 6
13.11.2013, 17:55  [ТС] #3
Это программа чтобы по номеру элемента определить число фибоначчи.А мне нужно найти НОМЕР Хк-ого элемента, чтобы оно выполняло условие Xк-1<=A<Xк.
0
ПерС
371 / 287 / 89
Регистрация: 05.11.2013
Сообщений: 820
Записей в блоге: 5
Завершенные тесты: 1
13.11.2013, 18:12 #4
Цитата Сообщение от Student3194 Посмотреть сообщение
Это программа чтобы по номеру элемента определить число фибоначчи.А мне нужно найти НОМЕР Хк-ого элемента, чтобы оно выполняло условие Xк-1<=A<Xк.
ну и найди, используя функцию поиска числа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
 
long int fibo (int n) {
 if (n==0) return 0;
 else if (n==1) return 1;
 else return (fibo(n-1)+fibo(n-2));
}
 
void main () {
 int a,n=1,xk,xk1;
 cout << "Введите число A ";
 cin >> a;
 while (1) {
  xk1=fibo(n);
  xk=fibo(n+1);
  if (xk1<=a && a<xk)
  break;
  n++;
 }
 cout << "N=" << n ;
}
1
Student3194
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 6
13.11.2013, 18:16  [ТС] #5
Спасибо огромное!
0
Байт
Эксперт C
16062 / 10331 / 1540
Регистрация: 24.12.2010
Сообщений: 19,470
13.11.2013, 18:29 #6
C++
1
2
double fi = (1 + sqrt(5.0))/2, fin=1;
for (n=1;fin < A;fin *= fi, n++);
работает для не очень маленьких A. Для маленьких (до 5, кажется), можно проверить вручную. Типа
C++
1
2
3
4
if (A==1) n=1
else if (A==2) n = 3;
else if (A==3 || A==4) n = 4;
else // предыдущий код
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
13.11.2013, 18:34 #7
Student3194, за такое тормозное подобие алгоритма спасибо не говорят.
Зачем числа Фибоначи считать рекурсивно? Рекурсия для этой задачи хороша лишь для демонстрации самой темы "рекурсия", а в цикле их считать не только лучше и быстрее,
Но ещё и не придётся как у него тыщу раз пересчитывать одни и те же числа!
Ты хоть понимаешь, что , вызывая fibo (int n) в цикле, ты будешь обречён тратить время на пересчитывание тех же чисел, что были расчитаны ранее!!! И так на каждом витке цикла!

Короче,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream.h>
int main () {
 long a,K=1,xk,xk1;
 cout << "Введите число A ";
 cin >> a;
 if (a==1) cout<<"K=2";
 xk1=2;
 xk=3;
 K=4;
 while (a<xk1) {
    xk1 ^= (xk2 ^= (xk1 ^= xk2));
    xk2+=xk1;
    K++;
 }
 cout << "K=" << K ;
 return 0;
}
1
ПерС
371 / 287 / 89
Регистрация: 05.11.2013
Сообщений: 820
Записей в блоге: 5
Завершенные тесты: 1
13.11.2013, 18:41 #8
меньше выпендрёжа, мохнатый.
за побитовые операции студентам, которые их не знают, тоже не говорят спасибо.
напиши так, если не спится:
C++
1
2
3
4
5
6
7
8
9
long int fibo (int n) {
 long int f0=0,f1=1,f2=1;
 for (long int i=0; i<n; i++) {
  f2=f1+f0;
  f1=f2;
  f0=f1;
 }
 return f2;
}
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
13.11.2013, 18:47 #9
Цитата Сообщение от ПерС Посмотреть сообщение
f2=f1+f0;
* f1=f2;
* f0=f1;
результат f1=f0=f2
0
ПерС
371 / 287 / 89
Регистрация: 05.11.2013
Сообщений: 820
Записей в блоге: 5
Завершенные тесты: 1
13.11.2013, 19:12 #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
результат f1=f0=f2
а ты местами переставь
C++
1
2
f0=f1;
f1=f2;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 19:12
Привет! Вот еще темы с ответами:

В зависимости от порядкового номера дня недели вывести на экран его название - C++
составить программу которая в зависимости от порядкового номера дня недели выводит на экран его название. С++ не знаю сложен помогите...

Составить программу, которая в зависимости от порядкового номера дня месяца (1,2,.,12) выводит на экран врем - C++
Нужна помощь в разборе задачи на С++. Начал изучать язык и столкнулся с проблемой того, что не могу разобраться с действием оператора...

Составить программу, которая в зависимости от порядкового номера месяца выводит на экран количество дней в этом месяце - C++
Составить программу, которая в зависимости от порядкового номера месяца выводит на экран количество дней в этом месяце. Рассмотреть 2...

Составить программу, которая в зависимости от порядкового номера месяца выводит на экран количество дней в этом месяце - C++
Помогите, пожалуйста, решить задачу в С++. Составить программу, которая в зависимости от порядкового номера месяца выводит на экран...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.11.2013, 19:12
Ответ Создать тему
Опции темы

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