Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные...

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

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Опишите на языке программирования алгоритм, который находит и выводит номера двух элементов массива, сумма которых минимальна.


Информатика (262 баллов) | 132 просмотров
0

Вообще, достаточно номер элемента записывать=))

0

Const N = 7;Var A:array[0..N+1]of integer; i,j:integer;BeginFor i:= 1 to N do Read(A[i]);A[0]:=1;A[N+1]:=2;For i:= 1 to N do Begin Write(A[i],' '); if i<>j then For j:= 1 to N do if A[i]+A[j]<A[A[0]]+A[A[N+1]] then Begin A[0]:=i; A[N+1]:=j End; End;WriteLn;WriteLn(A[0], ' , ',A[N+1]);End.

0

Моё тоже не намного короче получилось=))

0

Я в первом решении сделала ввод чисел при помощи randomize, почему вместо 30 чисел выводит только 24?

0

Это понятно, но почему-то выводится только 24

0

Вставь в конец проги:For i:= 1 to 30 do WriteLn(A[i],' ',i);Увидишь, что все 30 выводятся...

0

У меня так и написано, я не понимаю почему 24

Дан 1 ответ
0 голосов

Const
 N=30;

Var
 A:array[0..N+1]of integer;
 i,j:integer;

Begin
For i:= 1 to N do
 A[i]:=random(-7,7);
A[0]:=1;
A[N+1]:=2;
For i:= 1 to N do
 Begin
 Write(A[i],' (',i,'), ');
 For j:= 1 to N do
  if i<>j then
  if A[i]+A[j]   Begin
   A[0]:=i;
   A[N+1]:=j
   End;
 End;

WriteLn;
WriteLn(A[0], ' , ',A[N+1]);
End.