Помощь - Поиск - Пользователи - Календарь
Полная версия: Двумерные массивы - Матрицы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ZanakZ
Пожалуйста, помогите решить задачу :

Дан массив целых чисел. Произвести его сортировку так, чтобы сначала в возрастающем порядке шли все отрицательные числа, а потом в убывающем порядке все положительные числа.
neic
Исходный массив:
-5 5 1
-10 19 0
8 -2 -100

Нужно получить:
-100 -10 -5
-2 0 1
5 8 19

Так чтоль?

Дык тут всё понятно. Воспользуйся "пузырьковой" сортировкой.

Ссылка: Сортировка массива
Ссылка на внешнюю страницу

В своей задаче ты должен сделать 4 цикла на сортировку. На обход одного массива нужно 2 цикла, а т.к. у тебя двухмерный массив, значит 2*2=4.

Если ты так и не понял, покажи что ты сделал.

Будем помогать.
volvo
neic, ты думаешь в FAQ-е этого форума нет методов сортировки? Ошибаешься, есть...

Кстати, учись ЧИТАТЬ а не просматривать, я тебе уже говорил об этом. Сказано, что не ВСЕ значения в одном порядке, а одни по возрастанию, а другие - по убыванию.

Автору:
сортировка делается в любом случае за один проход - два цикла, 4 здесь никому не нужны, одномерный это массив, или двумерный - неважно, надо только правильно написать функцию сравнения... Вот, смотри (немного преобразованная функция отсюда: Методы сортировок ):

function f(a, b: integer): boolean;
begin
if (a > 0) and (b > 0) then f := (b > a)
else f := a > b
end;
procedure bubble(var ar: array of integer; n: integer);
var i, j, T: integer;
begin
for i := 1 to n do
for j := n downto i + 1 do
if f(ar[pred(j) - 1], ar[j - 1]) then begin
T := ar[pred(j) - 1]; ar[pred(j) - 1] := ar[j - 1]; ar[j - 1] := T
end
end;

type
matrix = array[1 .. 3, 1 .. 3] of integer;
arr = array[0 .. 0] of integer;

procedure print(const mx: matrix);
var i, j: integer;
begin
for i := 1 to 3 do begin
for j := 1 to 3 do write(mx[i, j]:5);
writeln;
end;
end;

const
mx: matrix = (
(-5, 5, 1), (-10, 19, 0), (8, -2, -100)
);


begin
bubble(arr(mx[1, 1]), 9);
print(mx);
end.

ZanakZ
Всё работает! Большое спасибо! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.