Failed test #2 of 3. Wrong answer
This is a sample test from the problem statement!
Test input:
4 6 7 9 12 14 18 21 26 28 10
Correct output:
no
Your code output:
3
ПЕРВЫЙ ТЕСТ ПРОХОДИТ.
Test input:
-5 -1 2 5 7 10 14 15 20 22 10
Test output:
5
ВТОРОЙ И ТРЕТИЙ НЕТ.
ВОТ СОБСТВЕННО КОД.
#include "iostream"
#include "cstdlib"
using namespace std;
int main(int argc, char* argv[]) {
setlocale(LC_ALL,"rus");
const int N = 10; int a[N];
// погнали))))
for(auto &i : a) cin >> i; //цикл для ввода
int elem; // элемент для ввода юзером
cin >> elem;//
//бинарный поиск
int low = 0, up = N - 1, middle_; // иницилизация границ и середины
int found_middle;// создаю несуществующий индекс, чтобы перезаписать потом в него новое значение
do{
middle_ = (low+up) / 2; // нахожу средний элемент
if(found_middle = (a[middle_] == elem)){ // сравниваю условием
found_middle = middle_;// перезаписываю в индекс значение
break;} //выхожу из цикла
if(elem < a[middle_]) { // иду справа налево
up = middle_ - 1;}
else
if (elem > a[middle_]) {// слева направо
low = middle_ + 1;}
}while(low<=up);// до тех пор, пока нижняя граница меньше или равна верхней
if (found_middle == -1){ cout <<"no\n";} //проверка на изменения индекса
else {cout << middle_;}
return 0;}
C/C++
Салют Амигос) Откуда в рабочем коде выскакивает несуществующие число. Сделайте ревью по фасту. Много сил не отнимет))
вы присваиваете found_middle значение сравнения a[middle_] == elem, то есть или 0 или 1, как по вашему этот if хоть раз не сработает?)
if(found_middle = (a[middle_] == elem)){ // сравниваю условием
found_middle = middle_;// перезаписываю в индекс значение
break;} //выхожу из цикла
И как у вас может вообще наступить условие:
if (found_middle == -1){ cout <<"no\n";} //проверка на изменения индекса
Если вы -1 ни разу в него не присваиваете? и в цикле нет возможности его появления. написано очень криво.
if(found_middle = (a[middle_] == elem)){ // сравниваю условием
found_middle = middle_;// перезаписываю в индекс значение
break;} //выхожу из цикла
И как у вас может вообще наступить условие:
if (found_middle == -1){ cout <<"no\n";} //проверка на изменения индекса
Если вы -1 ни разу в него не присваиваете? и в цикле нет возможности его появления. написано очень криво.
~RE:
do{
middle_ = (low+up) / 2; // нахожу средний элемент
if(found_middle = (a[middle_] == elem)){ // сравниваю условием
found_middle = middle_;// перезаписываю в индекс значение
break;} //выхожу из цикла
if(elem < a[middle_]) { // иду справа налево
up = middle_ - 1;}
else
if (elem > a[middle_]) {// слева направо
low = middle_ + 1;}
}while(low<=up);// до тех пор, пока нижняя граница меньше или равна верхней
if (found_middle == -1){ cout <<"no\n";} //проверка на изменения индекса
else {cout << middle_;}
return 0;}
◉ После исправления:
do{
middle_ = (low+up) / 2; // нахожу средний элемент
if(a[middle_] == elem){ // сравниваю условием
cout << middle_;
return 0;}
if(elem < a[middle_]) { // иду справа налево
up = middle_ - 1;}
else {// слева направо
low = middle_ + 1;}
}while(low<=up);// до тех пор, пока нижняя граница меньше или равна верхней
cout <<"no";
return 0;}
do{
middle_ = (low+up) / 2; // нахожу средний элемент
if(found_middle = (a[middle_] == elem)){ // сравниваю условием
found_middle = middle_;// перезаписываю в индекс значение
break;} //выхожу из цикла
if(elem < a[middle_]) { // иду справа налево
up = middle_ - 1;}
else
if (elem > a[middle_]) {// слева направо
low = middle_ + 1;}
}while(low<=up);// до тех пор, пока нижняя граница меньше или равна верхней
if (found_middle == -1){ cout <<"no\n";} //проверка на изменения индекса
else {cout << middle_;}
return 0;}
◉ После исправления:
do{
middle_ = (low+up) / 2; // нахожу средний элемент
if(a[middle_] == elem){ // сравниваю условием
cout << middle_;
return 0;}
if(elem < a[middle_]) { // иду справа налево
up = middle_ - 1;}
else {// слева направо
low = middle_ + 1;}
}while(low<=up);// до тех пор, пока нижняя граница меньше или равна верхней
cout <<"no";
return 0;}
Gosha Kalashnikov
Флаг нужно удалить — он больше не используется!!!
Gosha Kalashnikov
КАК ТОЛЬКО ИСКОМЫЙ ЭЛЕМЕНТ ОБНАРУЖЕН, ВЫВОДИМ ЕГО ИНДЕКС И ПРЕРЫВАЕМ ИСПОЛНЕНИЕ ПРОГРАММЫ ПО return 0;
ЦИКЛ БОЛЬШЕ НЕ ВЫПОЛНИТСЯ!!!
ЦИКЛ БОЛЬШЕ НЕ ВЫПОЛНИТСЯ!!!
Похожие вопросы
- Всем салют! Ребят где я затупил в коротком коде на С++. Сделайте ревью. Выводит 144 а нужно 168.
- Ребят всех с новым 2021) Помогите изменить код своим ревью. Я по крайне мере его изучу и пойму как работает всё)
- Хелпаните плиз, надо код перестроить на N вещестные числа и для вычесления гометрической прогрессии.
- Код для "Угадай число"
- Код работает некорректно. Язык Си. Нахождение максимального отрицательного элемента матрицы и замена его числом.
- Ошибки в коде. Почему не работает и как сделать чтобы заработало ?
- Как сделать проверку на число типо если кто то ввел не число то будет чтото выводить на экран c++
- Помогите сделать код на С++ Не понимаю как это сделать
- Задан одномерный массив целых чисел создать код на C++
- Сделать перестановку чисел с помощью функции в C++, но у меня получается чепуха
Но вы же крутой самоучка, нафига пользоваться поиском, пусть вам объясняют то, что миллионы раз до вас озвучено и решено, людям же делать явно нечего, да?.