Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите реализировать в программе функции, Реализация бинарного поиска и сортировка 
:(
    Опции темы
NTFF
Дата 20.2.2011, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.2.2011

Репутация: нет
Всего: нет



Код


#include <iostream.h>    //подключение библиотеки ввода/вывода
#include <conio.h>        // подключение библиотеки для обработки экрана
#include <iomanip.h>    // подключение библиотеки манипуляторов для форматированного вывода

const size = 30;        //максимальное количество элементов в массиве

/*Функция ввода массива с клавиатуры.
Вх.данные:
    mas - массив (не задан);
    n - количество элементов в массиве (не задано)
Вых.данные:
    mas - массив задан;
    n - количество элементов в массиве (от 1 до size-1)
Способ передачи параметров:
    Массив передается с помощью указателя на нулевой элемент массива.
    n передается по ссылке.
*/
void vvod(char *mas, int &n)
{  //цикл ввода количества элементов массива
   do
   {
      cout<<"Enter quantity of elements of array ->";
      cin>>n;
   }while((n<=0)||(n>=size)) ;

   //ввод элементов массива с клавиатуры
   for (int i=0;i<n;i++)
   {
      cout<<"#"<<i<<" = ";            //вывод индекса элемента, который вводится с клавиатуры
      cin>>mas[i];                //ввод i-го элемента массива с клавиатуры
   }
}

/*Функция печати массива.
Вх.данные:
    mas - массив;
    n - количество элементов в массиве (от 1 до size-1)
Способ передачи параметров:
    Массив передается с помощью указателя на нулевой элемент массива.
    n передается по значению.
*/
void print(char *mas, int n)
{
   for(int i=0;i<n;i++)
    cout<<setprecision(2)<<setw(10)<<mas[i];    //два знака после запятой,
//для одного числа выделяется 10 позиций на экране
}

/*Функция поиска индекса минимального элемента массива.
Вх.данные:
    mas - массив;
    n - количество элементов в массиве (от 1 до size-1)
Вых.данные:
    Индекс минимального элемента массива */
int min(char *mas, int n)
{  int imin = 0;                    //пусть элемент с номером 0 будет минимальным
   for(int i=1;i<n;i++)                //цикл просмотра элементов массива от 1 до n-1
     if (mas[i]<mas[imin])  imin = i;        //поиск минимального из двух чисел
   return imin;                    //возврат индекса минимального элемента массива
}


int k[10],v,i,j,m;
for (i=0;i<10;i++)
scanf("%d",&k[i]);
scanf("%d",&v);
i=0;
j=10;
m=50;
while (k[m]!=v)
    { if (k[m] < v) i+=m; else j=m-i; m=(i+j)/2;}
    printf("%d %d",v,m);
    return 0;
  }



/*Функция поиска индекса максимального элемента массива.
Вх.данные:
    mas - массив;
    n - количество элементов в массиве (от 1 до size-1)
Вых.данные:
    Индекс максимального элемента массива*/
int max(char *mas, int n)
{  int imax = 0;                    //пусть элемент с номером 0 будет максимальным
   for(int i=1;i<n;i++)                //цикл просмотра элементов массива от 1 до n-1
     if (mas[i]>mas[imax])  imax = i;        //поиск максимального из двух чисел
   return imax;                    //возврат индекса максимального элемента массива
}



/*Функция для вывода меню на экран и выбора одного из пунктов меню.
Вых.данные: номер пункта меню от 1 до 4*/ int menu()
{  int number;    //номер выбранного пункта меню
   do            //цикл выполняется пока пользователь не выберет пункт от 1 до 4
   {
      clrscr();
      cout<<"          MENU\n";
      cout<<"1. Input array please,\n";
      cout<<"2. Print array\n";
      cout<<"3. Processing array\n";
      cout<<"4. Exit\n";
      cout<<"\nSelect menu item -> ";
      cin>>number;
   }while ((number<1) || (number>4));
   return number;                //возврат номера пункта меню
}

void main()        //главная функция программы
{
   char a[size];    //массив
   int m;        //количество элементов в массиве
   int punkt;        //номер пункта меню
   int isvvod=0;    //признак, что массив задан: isvvod=0 - массив не задан, isvvod=1 - массив задан

   //цикл выполняется пока пользователь не выберет пункт "Выход"
   do
   {  punkt = menu();    //выбор пункта меню
      switch (punkt)    //выполнение действий в зависимости от номер пункта меню
      {
     case 1:        //пункт 1 "Ввод массива"
     {
       clrscr();
       cout<<" --= Input array =--\n";
       vvod(a,m);        //вызов функции для задания размера и элементов массива
       isvvod=1;        //признак, что массив задан
     };break;
     case 2:        //пункт 2 "Печать массива"
     {
        if (isvvod)    //если массив задан, то его можно распечатать
        {
           clrscr();
           cout<<" --= Print array =--\n";
           print(a,m);    //вызов функции для печати массива
        }
        else        //массив не задан, необходимо сначала задать массив
          cout <<"It's necessary to set array at first. Select point 1.";
        getch();        //задержка экрана до нажатия клавиши
     };break;
     case 3:        //пункт 3 "Обработка массива"
     {
        if (isvvod)    //если массив задан, то его можно распечатать
        {
           clrscr();
           cout<<" --= Processing array... =--\n";
           int imin = min(a,m);    //вызов функции для определения номера мин.элемента
           int imax = max(a,m);    //вызов функции для определения номера макс.элемента
           cout<<setprecision(2)<<"Minimum element = "<<a[imin]<<"\n";
               cout<<setprecision(2)<<"Maximu  element = "<<a[imax]<<"\n";
           cout<<"Index of the minimum element = "<<imin<<"\n";
           cout<<"Index of the maximum element = "<<imax<<"\n";
           cout<<setprecision(2)<<"The total of minimum and maximum values= "<<a[imin]+a[imax];
           cout<<"\nArray\n";
           print(a,m);        //вызов функции для печати массива
        }
        else        //массив не задан, необходимо сначала задать массив
          cout <<"It's necessary to set array at first. Select point 1.";
        getch();        //задержка экрана до нажатия клавиши
     };break;
      };

   }while(punkt!=4); //цикл выполняется пока не выбран пункт 4 "Выход"
}



PM MAIL   Вверх
Metalex
Дата 21.2.2011, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Лучше обратился бы : сюда. И что собственно не понятно: найти ошибки, помочь именно с поиском и сортировкой, а все остальное работает или как?
Я бы бинарный поиск реализовывал через рекурсию.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.