Для каждого из 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
Листинг программы
  1. const n=5;
  2.       k=4;
  3.       a:array[1..n] of integer=(1,4,5,8,10);
  4.       b:array[1..k] of integer=(5,6,1,9);
  5. var i,j,l,r,m:integer;
  6. begin
  7. for i:=1 to n do
  8. write(a[i]:3);
  9. writeln;
  10. for i:=1 to k do
  11. write(b[i]:3);
  12. writeln;
  13. for i:=1 to k do
  14.  begin
  15.   l:=1;
  16.   r:=n;
  17.   for j:=1 to n do
  18.    begin
  19.     m:=(l+r) div 2;
  20.     if a[m]>b[i] then r:=m else l:=m;
  21.    end;
  22.     if l<>r then
  23.      begin
  24.       if abs(a[r]-b[i])<abs(a[l]-b[i]) then writeln(a[r])
  25.       else writeln(a[l]);
  26.      end
  27.     else writeln(a[l])
  28.  end;
  29. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы