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

Фибоначиев поиск - C++

Восстановить пароль Регистрация
 
Stas12
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 102
20.10.2011, 21:00     Фибоначиев поиск #1
Дано множество из N=18 элементов.Найти элемент(ключ) к=33.
Элементы массива вводить с клавиатуры по возрастанию.
как это сделать с помощью Фибоначиева поиска??
Ребят кто знает?Просто вообще не ясно, что делать..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2011, 21:00     Фибоначиев поиск
Посмотрите здесь:

C++ Поиск. Последовательный поиск
C++ Поиск. Бинарный поиск
Поиск циклов в графе. Поиск центра взвешенного графа C++
C++ Поиск символа не могу переделать под поиск сочетания символов
Поиск пикселя и поиск изображения на экране C++
Поиск числа в двумерном массиве (бинарный поиск) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S.L.I.M.
15 / 12 / 2
Регистрация: 03.02.2011
Сообщений: 96
21.10.2011, 00:50     Фибоначиев поиск #2
а поискать и почитать алгоритмы?

http://www.matmetod.ru/fibonacci_algorithm
http://www.matmetod.ru/fibonacci_program

это искал?
Stas12
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 102
21.10.2011, 06:52  [ТС]     Фибоначиев поиск #3
Цитата Сообщение от S.L.I.M. Посмотреть сообщение
а поискать и почитать алгоритмы?

http://www.matmetod.ru/fibonacci_algorithm
http://www.matmetod.ru/fibonacci_program

это искал?
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "stdafx.h"
 
#include "iostream"
 
#include "math.h"
 
using namespace std;
 
 
double Fi(double);
 
double f(double);
 
int _tmain(int argc, _TCHAR* argv[])
 
{
 
int d,k=-1,p=0;
 
double L0,l,a=-2.0,b=0.0,eps,x,y,N=-1,kk=1.0;
 
cout<<"enter eps ";
 
cin>>eps ;
 
cout<<"enter l ";
 
cin>>l;
 
 
L0=b-a;
 
do{N++;}
 
while (Fi(N)<(abs(L0)/l));
 
 
x=a+(Fi(N-2)/Fi(N))*(b-a);
 
 
y=a+(Fi(N-1)/Fi(N))*(b-a);
 
do{
 
k++;
 
if (f(x)<=f(y))
 
{b=y;
 
y=x;
 
x=a+(Fi(N-k-3)/Fi(N-k-1))*(b-a);
 
};
 
 
 
if (f(x)>f(y))
 
{a=x;
 
x=y;
 
y=a+(Fi(N-k-2)/Fi(N-k-1))*(b-a);
 
};
 
}while(k!=N-3);
 
 
 
y=x+eps;
 
if (f(x)<=f(y))
 
{
 
b=y;
 
};
 
 
 
if (f(x)>f(y))
 
{a=x;
 
};
 
 
cout<<"x="<<(b+a)/2<<" k="<<k<<endl;
 
cin>>d;
 
return 0;
 
};
 
 
double Fi(double n){
 
double f0,fk,p;
 
f0=1;
 
fk=1;
 
for(int i=2;i<=n;i++){
 
p=fk;
 
fk=fk+f0;
 
f0=p;
 
};
 
if (n<2){fk=1;};
 
return fk;
 
};
 
double f(double x)
 
{
 
return 2*x*x+5*x-20;
 
} ;
 Комментарий модератора 
Используйте теги форматирования кода!


да спасибо, вот только не совсем понятно что в проге делается, можно откомментировать ее чуток?)))
Yandex
Объявления
21.10.2011, 06:52     Фибоначиев поиск
Ответ Создать тему
Опции темы

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