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

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

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

Листинг программы
  1. const n=10;
  2. var a:array [1..n] of integer;
  3. j,i,k,x,c,m,L,R,d:integer;
  4. begin
  5. writeln('Массив: ');
  6. begin
  7. for i:=1 to n do
  8. begin
  9. A[i]:=random(30)+1;
  10. write(A[i],' ');
  11. end;
  12. writeln;
  13. for i:= 1 to N-1 do
  14. for j:= 1 to n-1 do
  15. if a[j]>a[j+1] then begin
  16. m:=a[j];
  17. a[j]:=a[j+1];
  18. a[j+1]:=m;
  19. end;
  20. writeln;
  21. writeln('Отсортированный массив: ');
  22. for i:=1 to n do
  23. write(A[i],' ');
  24. writeln;
  25. end;
  26. writeln('Введите число Х:');
  27. readln(x);
  28. L:= 1; R:= N + 1; { начальный диапазон }
  29. while L < R-1 do begin
  30. c:= (L+R) div 2; { нашли середину }
  31. if X < A[c] then
  32. R:= c { изменить диапазон }
  33. else L:= c;
  34. end;
  35. if A[L] = X then
  36. writeln('Число ',X,' найдено')
  37. else
  38. writeln('Число ',X,' не найдено');
  39. end.

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

textual
Листинг программы
  1. const
  2.   n = 10;
  3.  
  4. var
  5.   a: array[1..n] of integer;
  6.   j, i, x, c, m, L, R: integer;
  7.  
  8. begin
  9.   writeln('Массив: ');
  10.   begin
  11.     for i := 1 to n do
  12.     begin
  13.       A[i] := random(30) + 1;
  14.       write(A[i], ' ');
  15.     end;
  16.     writeln;
  17.     for i := 1 to N - 1 do
  18.       for j := 1 to n - 1 do
  19.         if a[j] > a[j + 1] then begin
  20.           m := a[j];
  21.           a[j] := a[j + 1];
  22.           a[j + 1] := m;
  23.         end;
  24.     writeln;
  25.     writeln('Отсортированный массив: ');
  26.     for i := 1 to n do
  27.       write(A[i], ' ');
  28.     writeln;
  29.   end;
  30.   writeln('Введите число Х:');
  31.   readln(x);
  32.   L := 1;
  33.   R := N + 1; { начальный диапазон }
  34.   while L < R - 1 do
  35.   begin
  36.     c := (L + R) div 2; { нашли середину }
  37.     if X < A[c] then
  38.       R := c { изменить диапазон }
  39.     else L := c;
  40.   end;
  41.   if A[L] = X then
  42.     writeln('Число ', X, ' найдено')
  43.   else
  44.     if (L < N) and (X - A[L] > A[L + 1] - X) then writeln('Число, ближайшее к ', X, ' - ', A[L + 1])
  45.     else writeln('Число, ближайшее к ', X, ' - ', A[L])
  46. 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

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

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

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