Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2017, 20:48   #1
VolodyaBuzin
Пользователь
 
Регистрация: 10.11.2017
Сообщений: 56
По умолчанию Реализация фибоначчиева поиска ключей в массиве случайных чисел

Добрый вечер! Столкунулся с вот такой задачей:

Написать программу, которая:
 Запрашивает у пользователя размер одномерного массива и ключ для поиска;
 Формирует массив случайных чисел заданного размера;
 Осуществляет сортировку обменом получившегося массива;
 Осуществляет фибоначчиев поиск в отсортированном массиве;
Возвращает количество найденных в массиве совпадений с ключом и их порядковые номера.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;

template <typename R>
void Sort (R *x, int t) {
R tmp;
for(int k = t - 1; k>0; k--) {
for(int i = 0; i<k; i++) {
if(x[i] > x[i+1]) {
tmp = x[i];
x[i] = x[i+1];
x[i+1] = tmp;
}
}
}
}

int main() {
int I, n, key;
cout << “Vvedite razmer massiva N:\n”;
cin >> n;
int *MyArr = new int [n];
srand(time(NULL));
for (i = 0; i < n; i++) {
MyArr[i] = rand() % 201;
}
Sort<int>( MyArr, n);
cout << “Kakoj element massiva nuzhno najti?\n”;
cin >> key;
delete []MyArr;
_getch();
return 0;
}

Я писал алгоритм поиска, но получил не то, что надо. Нужно в отсортированном массиве искать ключ по элементам с индексами, равными числам Фибоначчи, сокращать диапазон, а потом сделать то же самое на новом диапазоне. А вместо этого происходит поиск всех элементов массива, равных числам Фибоначчи. Подскажите в комментариях к коду ниже, что нужно сделать на самом деле. Нужно сделать алгоритм фибоначчиева поиска шаблоном к коду выше.

#include <iostream>
#include<ctime>
using namespace std;
int inputofMatrix(int T[], int &n);
void outputOfMatrix(int T[],int &n);
int searchFibonacySeries(int T[], int &mmax);
int main()
{
int n;
cout<<"How many elements "<<endl;
cin>>n;
int *T=new int [n];
searchFibonacySeries(T,n);
outputOfMatrix(T,n);
delete [] T;
return 0;
}
int searchFibonacySeries(int T[], int &mmax)
{
int n;
int a,b(1),c(0);
n=inputofMatrix(T,mmax);
if(n<2) cout<<a<<" "<<b<<endl;
else {
for(int i=0;i<n;i++){
a = b + c;
c = b;
b = a;
for(int p=0;p<n;p++){
if(T[p]==c) cout<<c<<" ";
}
}
}
return 0;
}
int inputofMatrix(int T[], int &n)
{
srand(time(NULL));
for(int i=0;i<n;i++){
T[i]=rand()%n;
}
int mmax=T[0];
for(int i=0;i<n;i++){
if(mmax<T[i]) mmax=T[i];
}
return mmax;
}
void outputOfMatrix(int T[], int &n){
cout<<"Print of matrix "<<endl;
for(int i=0;i<n;i++) cout<<T[i]<<" ";
}
Изображения
Тип файла: jpg фибоначчи-1.jpg (85.3 Кб, 116 просмотров)
Тип файла: jpg фибоначчи-2.jpg (59.6 Кб, 125 просмотров)
Тип файла: jpg скрин-фибоначчи-ошибка.jpg (48.0 Кб, 120 просмотров)
VolodyaBuzin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите реализовать алгоритм Фибоначчиева поиска Chica Bond Помощь студентам 11 18.04.2015 15:49
найти номер наименьшего элемента в массиве, заданного датчиком случайных чисел на интервале [-20;25] Размер произвольный Кан Паскаль, Turbo Pascal, PascalABC.NET 2 26.12.2013 08:40
есть у кого нибудь программа с функцией подсчета количества отрицательных элементов в массиве случайных чисел?? Alexxx_screen Помощь студентам 20 12.09.2011 04:12
Составить программу которая находит индекс числа в массиве случайных чисел MadNikys Помощь студентам 9 03.03.2010 20:52