Помогите,пожалуйста) Дан массив из 20-ти элементов случайных чисел.Найти номера двух...

0 голосов
16 просмотров

Помогите,пожалуйста)
Дан массив из 20-ти элементов случайных чисел.Найти номера двух соседних элементов наименее отличающихся друг от друга.
Скиньте решение в паскале)
Заранее спасибо)


Информатика (32 баллов) | 16 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(20,-50,50); a.Println;
  var im:=a.Pairwise.Select(t->Abs(t[0]-t[1])).ToArray.IndexMin;
  Println(a[im],a[im+1]);
end.

Пример
7 -46 48 -46 -1 -33 40 -30 -45 -47 -5 14 21 -15 -17 -36 39 5 22 -19
-45 -47
(150k баллов)
0

Пример того, как далеко современный паскаль ушел от того, на котором писали деды и отцы нынешних школьников. Фактически, 2 строки кода вместо 20.

0

Три сделал потому, что не помещается тут на одной)))

0 голосов

Var
   arr: array [1.. 20] of integer;
   i, ind, diff: integer;

begin

i := 0;
ind := 0;
diff := maxint;

randomize;
for i := 1 to 20 do
begin
   arr[i] := random(100);
   write(arr[i], ' ');
end;

writeln(' ');

for i := 1 to 19 do
   if abs(arr[i] - arr[i + 1]) < diff then
   begin
      diff := abs(arr[i] - arr[i + 1]);
      ind := i;
   end;

writeln(ind, ' ', ind + 1);

end.

(618 баллов)