|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.11.2017, 20:48 | #1 |
Пользователь
Регистрация: 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]<<" "; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите реализовать алгоритм Фибоначчиева поиска | 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 |