Как вывести число, ближайшее к 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 не найдено в массиве.