IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Двумерные массивы - Матрицы
ZanakZ
сообщение 17.12.2007 12:26
Сообщение #1


Гость






Пожалуйста, помогите решить задачу :

Дан массив целых чисел. Произвести его сортировку так, чтобы сначала в возрастающем порядке шли все отрицательные числа, а потом в убывающем порядке все положительные числа.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 17.12.2007 18:06
Сообщение #2


Гость






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.

 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 15:14
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"