Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массив сортировка массива

Автор: Lety 18.03.2004 4:19

Господа! помогите решить 2 задачки..


1.Дан массив X(n) найти элемент массива наиболее близкий к наименьшему элементу?

2.Дан массив X(n) получить новый массив выбросив из исходного все элементы с наименьшим значением.

Автор: trminator 20.03.2004 12:00

Найболее близкий к найменьшему - такой, который отличается от найменьшего на минимальное число (если нарисовать это на прямой, то тот, который ближе всех к нему)

Код

{Пусть найменьший - это min, minn - его номер в массиве }
min2 := high(integer); {очень большое число -- на минимум явно не тянет}
for i := 1 to n do
   if i <> minn {минимальный не нужен}
      and abs(a[i] - min) < min2 then min2 := a[i]


Во втором после нахождения минимума снова проходим по исходному массиву, заталкивая во второй элементы, которые не равны минимальному

Автор: Незнайка 27.03.2004 16:57

Переформировать массив таким образом, чтобы его строки располагались по возрастанию их перервых элементов.
Пример:
2 6 3 1 3 5
4 5 2 -> 2 6 3
1 3 5 4 5 2

Напишите пожалуйста процидуоу сортировки. smile.gif

Автор: Lik 28.03.2004 4:47

может наименьших элементов ?

Автор: Незнайка 28.03.2004 14:08

Массив двумерный huh.gif

Автор: APAL 28.03.2004 15:25

Может так?

Код

Const
 Vmax = ..;
 Hmax = ..;

Type
 tip = Array [1..Vmax,1..Hmax] of Integer;

Var
 m : tip;

Procedure Sorting;
Var
 i,j,k : Word;
 tt : Array [1..Hmax] of Integer;
Begin
 For i:=1 to Vmax-1 do
   For j:=i+1 to Vmax do
     If m[j,1]>m[i,1] then
     Begin
       For k:=1 to Hmax do tt[k]:=m[j,k];
       For k:=1 to Hmax do m[j,k]:=m[i,k];
       For k:=1 to Hmax do m[i,k]:=tt[k];
     End;
End;

Begin
 {....}
 Sorting;
 {....}
End.


Прогу не проверял - написал прямо в окне.

Автор: Sir 29.03.2004 1:31

Советую посмотреть в FAQ Vit'а по Delphi
Там описано множество алгоритмов сортировки

Автор: Незнайка 29.03.2004 14:24

APAL не действует просто строчку последнию удоляет huh.gif

Автор: Atos 29.03.2004 16:06

Странно... Ну, если сортируем по возрастанию, то вместо > должно стоять <. Но удалять что-то процедура никоим образом не может!

Автор: APAL 31.03.2004 14:13

Цитата(Atos @ 29.03.04 9:06)
Странно... Ну, если сортируем по возрастанию, то вместо > должно стоять <.

Так все правильно - находим больший элемент и ставим его в начало...

Автор: Atos 31.03.2004 15:54

Да нет - по возрастанию это начиная с самых маленьких и заканчивая большими
См. пример массива, данный Незнайкой в самом начале

Автор: APAL 31.03.2004 19:25

А, ну точно. Тогда заменить надо.