| Код |
#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 "Выход" }
|
|