Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Массивы. как в массиве найти 3 наименьших числа не используя сортировку если можно код

Маргарита Тарасова Профи (772), закрыт 13 лет назад
Дополнен 13 лет назад
паскаль
Лучший ответ
Удачник Высший разум (142018) 13 лет назад
Переделаем на Паскаль:
var Min1, Min2, Min3: Double
var n: Integer, A(32767): Double, i: Integer
' Запрашиваем размер массива
Readln(n);
' Формируем массив
for i := 1 To n do
Writeln ("Введите " & i & "-ый член массива");
Readln (A(i));
' Сначала ищем самое наименьшее число
Min1 := A(1);
for i := 2 To n do
If A(i) < Min1 Then Min1 := A(i);
' Теперь ищем второе наименьшее число, которое больше первого, но меньше всех остальных
Min2 := A(1)
for i := 2 To n do
If (A(i) < Min2) AND (A(i) > Min1) Then Min2 := A(i);
' А теперь третье, которое больше второго, но меньше всех остальных
Min3 := A(1)
for i := 2 To n do
If (A(i) < Min3) AND (A(i) > Min2) Then Min3 := A(i);
' И выводим все три числа
Writeln (Min1, Min2, Min3)
End

Дима почему-то пишет конкретное число в 10000000, но не учитывает, что числа могут быть все больше него, и тогда его код не сработает, потому что x(i) так и останется 10000000.
Маргарита ТарасоваПрофи (772) 13 лет назад
мне бы паскаль если можно
Удачник Высший разум (142018) переделал на Паскаль
Маргарита ТарасоваПрофи (772) 13 лет назад
а почему если один из минимальных элементов поставить на первое место, то ответ не верный?
Удачник Высший разум (142018) Не знаю. Попробуй вместо: Min2 := A(1) for i := 2 To n do написать: Min2 := Min1 for i := 1 To n do и Min3 так же: Min3 := Min1 for i := 1 To n do
Остальные ответы
Дима Мастер (2295) 13 лет назад
n1:=1;
for i:=2 to n do
if n(n1)>x(i) then n1:=i;
min1:=x(n1);
x(n1):=10000000;
n1:=1;
for i:=2 to n do
if n(n1)>x(i) then n1:=i;
min2:=x(n1);
x(n1):=10000000;
n1:=1;
for i:=2 to n do
if n(n1)>x(i) then n1:=i;
min3:=x(n1);
x(n1):=10000000;

Похожие вопросы