Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному - Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте,помогите пожалуйста написать код,спасибо.Реализуйте алгоритм приближенного бинарного поиска. Входные данные В первой строке входных данных содержатся числа N и K (0NK100001 ). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2109. Выходные данные Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них. Примеры входные данные 5 5 1 3 5 7 9 2 4 8 1 6 выходные данные 1 3 7 1 5

Решение задачи: «Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному»

textual
Листинг программы
const n=5;
      k=4;
      a:array[1..n] of integer=(1,4,5,8,10);
      b:array[1..k] of integer=(5,6,1,9);
var i,j,l,r,m:integer;
begin
for i:=1 to n do
write(a[i]:3);
writeln;
for i:=1 to k do
write(b[i]:3);
writeln;
for i:=1 to k do
 begin
  l:=1;
  r:=n;
  for j:=1 to n do
   begin
    m:=(l+r) div 2;
    if a[m]>b[i] then r:=m else l:=m;
   end;
    if l<>r then
     begin
      if abs(a[r]-b[i])<abs(a[l]-b[i]) then writeln(a[r])
      else writeln(a[l]);
     end
    else writeln(a[l])
 end;
end.

Объяснение кода листинга программы

  1. Объявляется константа n со значением 5, которая представляет количество элементов в массиве a.
  2. Объявляется константа k со значением 4, которая представляет количество элементов в массиве b.
  3. Создается массив a с 5 элементами: 1, 4, 5, 8, 10.
  4. Создается массив b с 4 элементами: 5, 6, 1, 9.
  5. Объявляются переменные i, j, l, r, m, все типа integer.
  6. Начинается основная часть программы.
  7. Выводятся элементы массива a в одной строке.
  8. Выводятся элементы массива b в одной строке.
  9. Для каждого элемента b выполняется следующее:
    • Инициализируются переменные l и r с начальными значениями 1 и n соответственно.
    • Для каждого элемента массива a выполняется следующее:
      • Инициализируется переменная j от 1 до n.
      • Вычисляется значение переменной m как целочисленное деление суммы переменных l и r на 2.
      • Если a[m] > b[i], то значение переменной r становится равным m, в противном случае значение переменной l становится равным m.
    • После завершения цикла для каждого элемента массива a, выполняется следующее:
      • Если l не равно r, то выполняется:
        • Если разница между a[r] и b[i] меньше, чем разница между a[l] и b[i], то выводится значение a[r].
        • В противном случае выводится значение a[l].
      • В противном случае, выводится значение a[l]. Надеюсь, это поможет! Если у вас есть другие вопросы или вам нужны дополнительные пояснения, не стесняйтесь спрашивать.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы