Pascal-процедуры и функции

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
xxBOBAHxx
Сообщения: 8
Зарегистрирован: 19 окт 2008, 21:28

1.Создать два одномерных массива А и В различной длины. Рассортировать числа до максимального значения по возрастанию. Результат вывести. Затем рассортировать числа, расположенные после максимального значения по возрастанию и снова вывести. И, наконец, рассортировать весь массив по возрастанию и снова вывести.

с применением процедур и функций.
Результаты выводить в отдельных окнах и различным цветом.
pascal65536
Сообщения: 5
Зарегистрирован: 07 фев 2007, 17:09
Контактная информация:

А что со вторым массивом делать?
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

различные цвета : Uses CRT;
textcolor(const)

const от 0 до 15

сортировка (упорядочивание) массива
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
xxBOBAHxx
Сообщения: 8
Зарегистрирован: 19 окт 2008, 21:28

ПРИМЕР:
Даны два массива
1) 34 12 54 24 3 6

2) 34 56 67 3 4 0

Т.е необходимо:
а)отсортировать массив 1) по возрастанию до МАКСИМАЛЬНОГО ЗНАЧЕНИЯ = 54
таким образом чтобы получился массив 12 34 54 24 3 6
б)После этот же массив 1) необходимо отсортировать по возрастанию но уже ПОСЛЕ максимального элемента массива т.е. получится 34 12 54 3 6 24


Аналогичные опреации проделать с массивом 2)

Вот моя зарисовка.........

program PRIM_2;
const na=5; nb=10;
type mas=array[1..nb] of real;
var a, b:mas;
i:integer;
Procedure SOZD(var d:mas; k:integer);{создание массива}
begin
for i:=1 to k do
d:=random*500;
end;
Procedure VIVOD(d:mas; k:integer; t:string);{вывод массива}
begin
writeln(t);
for i:=1 to k do
write(d:0:0, ' ');
writeln;
end;
function max(d:mas; k:integer):real;{выявление максимального элемента массива}
var i:integer; m:real; c:real;
begin
m:=-maxint;
for i:=1 to k do
if d>m then m:=d;
max:=m;
end;
procedure SORT(var d:mas; k:integer);{попытка отсортировать массив до
максимального элемента}
var c:real;
begin
i:=1;
repeat
if d>d[i+1] then
begin
c:=d; d:=d[i+1]; d[i+1]:=c;
if i>1 then dec(i)
end
else inc(i);
until i>=k or d=???;{так и не понял чему приравнять d чтоб он прекпащал сортировку, т.е выходил из цикла когда d равнялся бы максимальному значению в массиве}
end;
[I]BEGIN
randomize;
SOZD(a, na); VIVOD(a, na, 'massiv A');
writeln('max_mas A=', max(a, na):0:0);
SORT(a, na); VIVOD(a, na, 'massiv A posle');
SOZD(b, nb); VIVOD(b, nb, 'massiv B');
writeln('max_mas B=', max(b, nb):0:0);
readln
END.


Больше всего меня интересует как отсортировать массив по возрастанию до максимального значения и после максимального значения....

P.S.за ранее благодарен за содействие))
pascal65536
Сообщения: 5
Зарегистрирован: 07 фев 2007, 17:09
Контактная информация:

xxBOBAHxx писал(а): Больше всего меня интересует как отсортировать массив по возрастанию до максимального значения и после максимального значения....


Нужно усложнить процедуру сортировки так, чтобы у неё былы два параметра, показывающие какой участок массива нужно сортировать. Начало и конец конечно же.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

xxBOBAHxx, для сохранения форматирования исходника обрамляйте его тегами
[noparse] либо
[syntax='pascal'] [/syntax]
[/noparse]
Изображение
Ответить