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

0 голосов

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


спросил от Начинающий (262 баллов) в категории Информатика
оставил комментарий от

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

оставил комментарий от

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.

оставил комментарий от

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

оставил комментарий от Начинающий (262 баллов)

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

оставил комментарий от Начинающий (262 баллов)

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

оставил комментарий от

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

оставил комментарий от Начинающий (262 баллов)

У меня так и написано, я не понимаю почему 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.

...