#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++. Где ошибка?Необходимо определенное количество раз выполнить поиск номера элемента в массиве по его значению.
В данном коде отсутствует объявление переменной "j" в главной функции, но она используется в цикле "for" внутри функции.
Чтобы исправить это, необходимо объявить переменную "j" в главной функции перед циклом "for", например, так:
Чтобы исправить это, необходимо объявить переменную "j" в главной функции перед циклом "for", например, так:
int n,k,index_k,req,j;
index_k=-1;
cin >> n;
cin >> req;
int a[n];
for (j=0; j> n;
cin >> req;
int a[n];
for (int i=0; i> a[i];
for (j=0; j> k;
int left = 0, right = n-1;
int middle;
while (left
Миша Мирафизов
Чтобы двоичный поиск работал правильно, необходимо, чтобы массив был отсортирован. Разве программа, показанная в данном вопросе, предоставляет такие гарантии?
В данном коде есть ошибка в том, что внешний цикл for повторяется только req раз, в то время как внутренний цикл считывает массив a с клавиатуры и выполняет поиск в нем значения k для каждого значения j от 0 до req-1. Однако, на каждой итерации внутреннего цикла значение a перезаписывается, так что поиск для предыдущих значений j не сохраняется, и программа выводит только последний результат.
Чтобы исправить эту ошибку, нужно считывать массив a с клавиатуры перед началом внешнего цикла, а затем выполнять поиск значения k в каждой итерации цикла, используя уже считанный массив.
Исправленный код может выглядеть следующим образом:
Чтобы исправить эту ошибку, нужно считывать массив a с клавиатуры перед началом внешнего цикла, а затем выполнять поиск значения k в каждой итерации цикла, используя уже считанный массив.
Исправленный код может выглядеть следующим образом:
#include
using namespace std;
int main() {
int n, k, index_k, req;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> req;
for (int j = 0; j < req; j++) {
cin >> k;
index_k = -1;
int left = 0, right = n - 1;
int middle;
while (left
Похожие вопросы
- C++. Где тут есть ошибка?Нужно определенное количество раз выполнить поиск номера элемента в массиве по его значению.
- Как работать с элементами динамического массива из функции?
- С++ Составить функцию, которая меняет местами пары соседних элементов в массиве
- Написать функцию, определяющую количество положительных, отрицательных и нулевых элементов передаваемого ей массива.
- Задан целочисленный массив размера N. Определить число элементов в массиве кратных 2.
- В языке С.Необходимо определить количество целых чисел из ряда от 1 до 100, которые содержат цифры 3.
- Задача на максимальное произведение в векторе C++ Где ошибка в коде?
- Dev C++. Выдаёт ошибки( Помогите, пожадуйста, исправить
- C++\Работа с одномерными массивами: удаление, добавление, перестановка, поиск
- Задание массива в С++ с переменным количеством элементов