72 lines
2.1 KiB
C++
72 lines
2.1 KiB
C++
#include<iostream>
|
|
int main(){
|
|
int size=0;
|
|
int elements=0;
|
|
int target=0;
|
|
int middle=0;
|
|
bool found = false;
|
|
|
|
|
|
while(true){
|
|
std::cout<<"Введите размер вашего массива: ";
|
|
if(!(std::cin>>size)){
|
|
std::cin.clear();
|
|
std::cin.ignore(1000,'\n');
|
|
std::cerr<<"Ошибка типа данных. Введите число: "<<std::endl;
|
|
continue;
|
|
}
|
|
|
|
|
|
if(size<=0){
|
|
std::cerr<<"Ошибка. Массив должен быть больше нуля. Повторите попытку: ";
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
std::cout<<"Размер вашего массива: "<<size<<std::endl;
|
|
std::cout<<"Введите элементы массива: ";
|
|
|
|
int* arr = new int[size];
|
|
int left=0;
|
|
int right = size -1;
|
|
|
|
for(int i=0;i<size;i++){
|
|
std::cin>>elements;
|
|
arr[i] = elements;
|
|
std::cout<<i<<")"<<elements<<std::endl;
|
|
}
|
|
std::cout<<"Ваши элементы: "<<std::endl;
|
|
for (int i = 0; i < size; i++) {
|
|
std::cout << arr[i]<<" ";
|
|
}
|
|
|
|
std::cout<<"Введите элемент для поиска: ";
|
|
std::cin>>target;
|
|
|
|
while(left<=right){
|
|
middle=left+(right-left)/2;
|
|
|
|
if(arr[middle]==target){
|
|
found = true;
|
|
std::cout<<"Элемент найден: "<<target<<std::endl;
|
|
std::cout<<"Индекс элемента: "<<middle<<std::endl;
|
|
break;
|
|
}
|
|
else if(arr[middle]<target){
|
|
left=middle + 1;
|
|
}
|
|
else{
|
|
right=middle-1;
|
|
}
|
|
}
|
|
delete[] arr;
|
|
|
|
if(!found){
|
|
std::cerr<<"Вашего элемента нет в массиве";
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|