Как вывести число, ближайшее к 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.
Объяснение кода листинга программы
- Создаются две переменные n и a, которые имеют одинаковое название, но разные значения. Переменная n инициализируется значением 10, а переменная a инициализируется случайным числом от 1 до 30.
- Выводится массив чисел, созданный в предыдущем шаге.
- Затем выполняется цикл, который сортирует массив чисел в порядке возрастания.
- После этого пользователю предлагается ввести число X.
- Задаются начальные значения переменных L и R, которые представляют собой границы диапазона поиска числа X.
- Затем выполняется цикл, который последовательно сужает диапазон поиска числа X.
- Если число X найдено в массиве, то выводится сообщение об этом.
- Если число X не найдено в массиве, то проверяется, находится ли число X между двумя числами в массиве.
- Если это так, то выводится сообщение о ближайшем числе.
- Если это не так, то выводится сообщение о том, что число X не найдено в массиве.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д