#include <iostream>
using namespace std;
int main() {
int n,k,index_k,req,j;
index_k=-1;
cin >> n;
cin >> req;
int a[n];
for (int j=0; j<req; j++)
{
for (int i=0; i<n; i++)
cin >> a[i];
cin >> k;
int left = 0, right = n-1;
int middle;
while (left <= right){
middle = (left+right)/2;
if (k == a[middle]) {
index_k = middle;
break;
}
if (k < a[middle]) right = middle - 1;
else left = middle + 1;
}
if (index_k == -1 )
cout << "not_found";
else cout << index_k+1;
}
}
C/C++
C++. Где тут есть ошибка?Нужно определенное количество раз выполнить поиск номера элемента в массиве по его значению.
В массивЕ или в массивАХ?
Если в массивЕ, то массив должен вводиться один раз. Ты же перед каждым вводом k производишь ввод нового массива.
Если в массивЕ, то массив должен вводиться один раз. Ты же перед каждым вводом k производишь ввод нового массива.
Антон Резник
мне нужно, чтобы было цикличное выполнение бинарного поиска
int a[n];
Не взлетит
Не взлетит
Samir Babaev
Взлетит на GCC/MinGW
Александр Акифьев
компилятор будет против:-)
ChatGPT советует следующее:
В данном коде есть ошибка, которая приведет к неправильному результату. Ошибка заключается в том, что переменная index_k не сбрасывается в -1 перед каждым новым циклом поиска номера элемента в массиве.
После того, как номер элемента был найден, переменная index_k сохраняет его значение и используется для вывода результата. Однако, при следующем цикле поиска, index_k остается с предыдущего поиска, что приводит к неверным результатам.
Чтобы исправить ошибку, необходимо добавить index_k = -1; перед каждым новым циклом поиска номера элемента. Вот исправленный код:
В данном коде есть ошибка, которая приведет к неправильному результату. Ошибка заключается в том, что переменная index_k не сбрасывается в -1 перед каждым новым циклом поиска номера элемента в массиве.
После того, как номер элемента был найден, переменная index_k сохраняет его значение и используется для вывода результата. Однако, при следующем цикле поиска, index_k остается с предыдущего поиска, что приводит к неверным результатам.
Чтобы исправить ошибку, необходимо добавить index_k = -1; перед каждым новым циклом поиска номера элемента. Вот исправленный код:
#include
using namespace std;
int main() {
int n, k, index_k, req;
cin >> n >> req;
int a[n];
for (int j = 0; j < req; j++) {
index_k = -1;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> k;
int left = 0, right = n - 1;
int middle;
while (left
Антон Резник
вывод не тот
В данном коде не хватает одной открывающей фигурной скобки после внешнего цикла for, который начинается с for (int j=0; j<req; j++). Добавьте скобку после этого цикла, чтобы программа скомпилировалась правильно.
Похожие вопросы
- C++. Где ошибка?Необходимо определенное количество раз выполнить поиск номера элемента в массиве по его значению.
- Ошибка с русскими символами в языке C++ программе xcode. Пропадает если указать большее количество элементов в строке.
- Как работать с элементами динамического массива из функции?
- С++ Составить функцию, которая меняет местами пары соседних элементов в массиве
- Написать функцию, определяющую количество положительных, отрицательных и нулевых элементов передаваемого ей массива.
- Задан целочисленный массив размера N. Определить число элементов в массиве кратных 2.
- C++Builder 10.3 Ошибка подключения к mysql
- С++. Где ошибка. нужно вставить в слово "world" в слово "of tenks". Короче должно получиться так worldnks (вместе)
- C++\Работа с одномерными массивами: удаление, добавление, перестановка, поиск
- Задание массива в С++ с переменным количеством элементов