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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построить и записать алгоритм определения судейской оценки на спортивных соревнованиях http://www.cyberforum.ru/cpp-beginners/thread874228.html
Построить и записать алгоритм определения судейской оценки на спортивных соревнованиях. Необходимо из N выставленных оценок отбросить минимальную и максимальную и усреднить оставшиеся оценки не могу разобраться как делать, нужно написать алгоритм для программы на си++
C++ не могу понять (В массиве действительных чисел наименьший элемент поместить на первое место, наименьший из оставшихся – на последнее место) Колокол. В массиве действительных чисел наименьший элемент поместить на первое место, наименьший из оставшихся – на последнее место, следующий по величине – на второе место, следующий – на предпоследнее место и так далее – до середины массива. нужно составить алгоритм выполнения задачи на си++ очень прошу помогите! Добавлено через 10 минут Колокол. В массиве действительных чисел... http://www.cyberforum.ru/cpp-beginners/thread874226.html
C++ как в класс добавить два наследуемых класса
к примеру 1) class HTATSPA: public Tanks { public: HTATSPA(); ~HTATSPA(); int getarmordin(); void setarmordin(int r); private:
Вывод C++
Помогите, пожалуйста. Вот такой код: #include <iostream> #include <cmath> #include <string> #include <locale> #include <conio.h> using namespace std; const float PI = 3.141592;
C++ С++ (векторы) Даны координаты вершин равнобедренной трапеции. Вывести длину её высоты http://www.cyberforum.ru/cpp-beginners/thread874170.html
Задали сделать прогу, но так как я не понимаю даже примерно как делать мог бы кто-то сделать мне её как пример? Я бы за что-то понял и сделал другие программы. Даны координаты вершин равнобедренной трапеции. Вывести длину её высоты.
C++ Сортировка файла (ключ - средний бал студента; метод сортировки QuickSort и пузырьковая сортировка) Всем привет. Есть прога, которая записывает студентов в файл и выводит на экран студентов средний бал который >='6'. Помогите пж отсортировать файл по условию : ключ - средний бал. Метод сортировки QuickSort и пузырьковая сортировка. заранее благодарю. #include <iostream.h> #include <stdio.h> #include <conio.h> подробнее

Показать сообщение отдельно
Nikolai699
16 / 16 / 3
Регистрация: 15.03.2012
Сообщений: 106

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

22.05.2013, 12:43. Просмотров 192. Ответов 0
Метки (Все метки)

отладить программу на си++ Фибоначчиева поиска ключей с меню ввода, меню выполнения и меню вывода.
Алгоритм:
K-ключ, который нужно найти;
i=Fn- число фибоначчи (текущее число фибоначчи), q и p - последовательные числа фибоначчи, q=Fn-2, p=Fn-1, n- кол-во ключей и чисел фибоначчи.
1) смотрим очередной i, если K<Ki, то переходим к пункту 2
если K>Ki, то переходим к пункту 3
если K=Ki, то переходим к пункту 4
2) если q=0, то перeходим к пункту 5
если q!=0? то i=i-q, заменяем p на q и q на p-q переходим к пункту 1
3) если p=1, то переходим к пункту 5
если p!=1, то i=i+q и p=p-q, и q=q-p и переходим к пункту 1
4) алгоритм заканчивается удачно
5) алгоритм заканчивается неудачно
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
#include<iostream>
using namespace std;
 
int main() {
    int K[19] = {0, 3, 5, 8, 9, 11, 14, 15, 19, 21, 22, 28, 33, 35, 37, 42, 45, 48, 52};
    int const N = 10;
    int f[N], k, flag = 0, i, p, q, Key = 12;
    if (N == 1)
        f[1] = 1;
    if(N !=0 || N > 0){
        f[1] = 1;
        f[2] = 1;
        for(k = 3; k <= N ; k++){
            f[k] = f[k - 1] + f[k - 2];
        }
    }
    for(k = 1; k <= N ; k++)
        cout << f[k] << " " << endl;
    cout << "\n";
    
    i = f[1];
    p = f[k - 1];
    q = f[k - 2];
    cout << i << " " << p << " " << q << " "<<endl;
    while(1){
        if(flag == 1){
            cout << "not found =( ";
            break;
        }
        if(Key == K[i]){
            cout << "element naiden!!!yra!!!" ;break;
        }
        if(Key < K[i]){
            if(q == 0){
                flag = 1;
            }
            else
            {
                i = i - q;
                p = q;
                q = p - q;
            }
        }
        if(Key > K[i]){
            if(p == 1){
                flag = 1;
            }
            else
            {
                i = i + q;
                p = p - q;
                q = q - p;
            }
        }
    }
}
вот то что получилось, но не совсем работает, помогите доделать)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru