Как вывести число, ближайшее к X? - Pascal

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

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

const n=10;
var a:array [1..n] of integer;
    j,i,k,x,c,m,L,R,d:integer;
begin
writeln('Массив: ');
begin
for i:=1 to n do
 begin
  A[i]:=random(30)+1;
  write(A[i],' ');
 end;
 writeln;
 for i:= 1 to N-1 do 
 for j:= 1 to n-1 do
 if a[j]>a[j+1] then begin
  m:=a[j];
  a[j]:=a[j+1];
  a[j+1]:=m;
 end;
 writeln;
  writeln('Отсортированный массив: ');
for i:=1 to n do
write(A[i],' ');
writeln;
end;
writeln('Введите число Х:');
readln(x);
L:= 1; R:= N + 1; { начальный диапазон }
while L < R-1 do begin
c:= (L+R) div 2; { нашли середину }
if X < A[c] then
R:= c { изменить диапазон }
else L:= c;
end;
if A[L] = X then
writeln('Число ',X,' найдено')
else
writeln('Число ',X,' не найдено');
end.

Решение задачи: «Как вывести число, ближайшее к X?»

textual
Листинг программы
const
  n = 10;
 
var
  a: array[1..n] of integer;
  j, i, x, c, m, L, R: integer;
 
begin
  writeln('Массив: ');
  begin
    for i := 1 to n do
    begin
      A[i] := random(30) + 1;
      write(A[i], ' ');
    end;
    writeln;
    for i := 1 to N - 1 do 
      for j := 1 to n - 1 do
        if a[j] > a[j + 1] then begin
          m := a[j];
          a[j] := a[j + 1];
          a[j + 1] := m;
        end;
    writeln;
    writeln('Отсортированный массив: ');
    for i := 1 to n do
      write(A[i], ' ');
    writeln;
  end;
  writeln('Введите число Х:');
  readln(x);
  L := 1;
  R := N + 1; { начальный диапазон }
  while L < R - 1 do 
  begin
    c := (L + R) div 2; { нашли середину }
    if X < A[c] then
      R := c { изменить диапазон }
    else L := c;
  end;
  if A[L] = X then
    writeln('Число ', X, ' найдено')
  else
    if (L < N) and (X - A[L] > A[L + 1] - X) then writeln('Число, ближайшее к ', X, ' - ', A[L + 1])
    else writeln('Число, ближайшее к ', X, ' - ', A[L])
end.

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

  1. Создаются две переменные n и a, которые имеют одинаковое название, но разные значения. Переменная n инициализируется значением 10, а переменная a инициализируется случайным числом от 1 до 30.
  2. Выводится массив чисел, созданный в предыдущем шаге.
  3. Затем выполняется цикл, который сортирует массив чисел в порядке возрастания.
  4. После этого пользователю предлагается ввести число X.
  5. Задаются начальные значения переменных L и R, которые представляют собой границы диапазона поиска числа X.
  6. Затем выполняется цикл, который последовательно сужает диапазон поиска числа X.
  7. Если число X найдено в массиве, то выводится сообщение об этом.
  8. Если число X не найдено в массиве, то проверяется, находится ли число X между двумя числами в массиве.
  9. Если это так, то выводится сообщение о ближайшем числе.
  10. Если это не так, то выводится сообщение о том, что число X не найдено в массиве.

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


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

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

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