Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

lamed
Статус: Профессионал
Рейтинг: 2769
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2473
∙ повысить рейтинг »
star9491
Статус: Профессионал
Рейтинг: 2299
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Pascal (Паскаль)

Номер выпуска:1112
Дата выхода:22.06.2010, 13:30
Администратор рассылки:Boriss, Академик
Подписчиков / экспертов:201 / 180
Вопросов / ответов:1 / 1

Вопрос № 179134: Помогите, пожалуйста. Рассортировать числа «горкой», то есть 1 минимальное на первое место, 2 минимальное на последнее место и т. д. Затем удалить максимальное значение из данных....



Вопрос № 179134:

Помогите, пожалуйста.

Рассортировать числа «горкой», то есть 1 минимальное на первое место, 2 минимальное на последнее место и т. д. Затем удалить максимальное значение из данных.

Отправлен: 17.06.2010, 13:01
Вопрос задал: Петрова Алина, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает amnick, Профессионал :
Здравствуйте, Петрова Алина.

Небольшой поиск в интернете дает простую программу сортировки «горкой» на Паскале, написанную экспертом Пупоревым Юрием Борисовичем.
Чтобы не повторяться, привожу свой вариант сортировки с последующим удалением максимального элемента.
Код:
{
Рассортировать числа «горкой», то есть 1 минимальное на первое место,
2 минимальное на последнее место и т. д. Затем удалить максимальное
значение из данных.
}
program q179134;

var
a: array [0..99] of integer;
n,i,iMin,loc,left,right: integer;
min,temp: integer;

{ вывод n перв ых элементов массива на экран }
procedure printA( n: integer );
var i: integer;
begin
for i:=0 to n-1 do
write( a[i]:4 ); { 20 элементов в строке }
writeln;
end;

begin
write( 'Razmer massiva n=' );
readln( n );
{ заполняем массив случайными числами от 0 до 99 }
randomize;
for i:=0 to n-1 do
a[i]:=random(100);

writeln( 'Ishodnyj:' );
printA( n );

loc := 0; { текущая позиция для записи минимума }
left := 0; { левая граница несортированной части }
right := n-1; { правая граница несортированной части }
while left < right do begin { пока границы не сошлись в середине }
{ ищем минимум }
iMin := left;
min := a[left];
for i:=left+1 to right do
if a[i] < min then begin iMin := i; min := a[i]; end;

{ обмениваем значение a[loc] с минимальным }
temp := a[loc];
a[loc] := min;
a[iMin] := temp;

{ сдвигаем границы }
if loc < right then begin
loc := right;
inc( left );
end
else begin
loc := left;
dec( right );
end;
end;

writeln( 'Gorka:' );
printA( n );

{ здесь left=right, причем это индекс макс. элемента }
writeln( 'Max = ', a[left] );
{ удаляем максимальный элемент }
for i := left to n-2 do
a[i] := a[i+1];
dec(n);
printA( n );

write( 'Press [Enter] to exit...' );
readln;
end.

Программа проверена в Borland Pascal 7.0.

Успехов!

Ответ отправил: amnick, Профессионал
Ответ отправлен: 17.06.2010, 14:10
Номер ответа: 262163

Оценка ответа: 5
Комментарий к оценке:
спасибо!

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 262163 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.16 от 26.05.2010

    В избранное