Дан целочисленный массив A. Найти в нем два наименьших элемента. ПАСКАЛЬ!!!!

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

Дан целочисленный массив A. Найти в нем два наименьших элемента. ПАСКАЛЬ!!!!


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

Первый наименьший - это наименьший, а второй какой? Если два одинаковых, то второй такой же. как первый, или мы должны исключить все элементы со значением, равным минимальному и найти минимальный среди оставшихся?

0

Это меньший или равный наименьшему

0

Но не тот же

0

Меньший наименьшего быть не может)))

0

Ну да, оговорилась. Например, самый маленький 5, а следующий самый маленький 6

0

Так я и спросил, если будет три элемента со значением 5 - мы все равно 6 должны дать в ответе?

Дано ответов: 2
0 голосов
Правильный ответ

Const
  n=15;
var
  a:array[1..n] of integer;
  i,t,min1,min2:integer;
begin
  Write('Исходный массив: ');
  min1:=1000; min2:=min1;
  for i:=1 to n do
  begin
    t:=Random(50); a[i]:=t;
    if min1>t then
    begin min2:=min1; min1:=t end
    else if min2>t then min2:=t;
    Write(t:3)
  end;
  Writeln(#13#10,'Найденные минимумы: ',min1:3,min2:3);
end.

Тестовое решение:
Исходный массив:  34  8 44 37 37  2 40 46  8 35 44 32  5 14 40
Найденные минимумы:   2  5


(142k баллов)
0

Кто не знает, #13#10 - это аналог отдельного оператора Writeln; - смена строки.

0

Смысл решение - однопроходный алгоритм, т.е. все делается за единственный цикл.

0 голосов

Const
n=10;
var
a:array[1..n]of integer;
i,min,j,min2:integer;
begin
   for i:=1 to n do
       begin
            a[i]:=random(100);
             write(a[i]:4);
       end;
min:=a[1];j:=1;min2:=a[1];
for i:=1 to n do
    if a[i]          begin
              min:=a[i];
              j:=i;
         end;
for i:=1 to n do
    if (a[i]>=min)and(i<>j)and(a[i]      min2:=a[i];
writeln;
writeln(min,' ',min2);
end.

(9.6k баллов)