Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номера двух элементов массива, наименее отличающихся друг от друга. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них. const N=30; var a: array [1..N] of integer; i, j, min, min2, s: integer; begin for i:=1 to N do readln(a[i]);
Инициализируем переменные min и min2 как первые два элемента массива a.Проходим по массиву a, начиная с третьего элемента, и для каждого элемента находим разницу между ним и элементом min. Если эта разница меньше разницы между min и min2, то обновляем min2 и min соответственно.После завершения прохода по массиву, выводим индексы элементов min и min2.
Пример на языке программирования Pascal:
const N=30; var a: array [1..N] of integer; i, min, min2, diff, diff_min, diff_min2: integer; begin for i:=1 to N do readln(a[i]); min := a[1]; min2 := a[2]; diff_min := abs(min - min2); for i := 3 to N do begin diff := abs(min - a[i]); if diff < diff_min then begin diff_min2 := diff_min; diff_min := diff; min2 := min; min := a[i]; end else if diff < diff_min2 then begin diff_min2 := diff; min2 := a[i]; end; end; for i := 1 to N do begin if a[i] = min then write(i, ' '); if a[i] = min2 then write(i, ' '); end; end.
Этот алгоритм находит и выводит индексы двух элементов массива, которые наименее отличаются друг от друга.
Алгоритм:
Инициализируем переменные min и min2 как первые два элемента массива a.Проходим по массиву a, начиная с третьего элемента, и для каждого элемента находим разницу между ним и элементом min. Если эта разница меньше разницы между min и min2, то обновляем min2 и min соответственно.После завершения прохода по массиву, выводим индексы элементов min и min2.Пример на языке программирования Pascal:
const N=30;var a: array [1..N] of integer;
i, min, min2, diff, diff_min, diff_min2: integer;
begin
for i:=1 to N do
readln(a[i]);
min := a[1];
min2 := a[2];
diff_min := abs(min - min2);
for i := 3 to N do
begin
diff := abs(min - a[i]);
if diff < diff_min then
begin
diff_min2 := diff_min;
diff_min := diff;
min2 := min;
min := a[i];
end
else if diff < diff_min2 then
begin
diff_min2 := diff;
min2 := a[i];
end;
end;
for i := 1 to N do
begin
if a[i] = min then
write(i, ' ');
if a[i] = min2 then
write(i, ' ');
end;
end.
Этот алгоритм находит и выводит индексы двух элементов массива, которые наименее отличаются друг от друга.