«аочное дистанционное образование с получением государственного диплома через Internet










ѕолучить информацию о поступлении
 
√лавна€ Ќовости  арта сайта ‘отоальбом √остева€ книга  онтакты

 

”пражнение на линейную сортировку массива

”пражнение. —оздайте приложение, которое предлагает пользователю ввести размер массива и создать массив случайных целых чисел, а затем, использу€ переключатели, указать пор€док сортировки (по неубыванию, по невозрастанию), выполнить сортировку и просмотреть отсортированный массив.

—оздайте форму, дл€ свойства Caption задайте значение ЂЋинейна€ сортировка массиваї. Ќа форме разместите компоненты Editl, Edit2 и Edit3, кнопку Buttonl, дл€ свойства Caption которой задайте значение Ђ—оздать массивї. ”далите текст Editl, Edit2, Edit3 из соответствующих компонентов. –азместите на форме компоненты Labell, Label2 и задайте дл€ их свойств Caption значени€ Ђ„исло элементовї и Ђ»сходный массивї соответственно.

Ќиже объекта Edit3 на форме разместите панель RadioGroupl, дл€ свойства Caption которой задайте значение Ђѕор€док сортировкиї. ƒл€ выбора пор€дка сортировки задайте два переключател€ в панели RadioGroupl и подписи к ним. ¬ыбрав в »нспекторе объектов компонент RadioGroupl, на странице свойств выберите свойство Items, затем в окне String List Editor введите список элементов: ѕо невозрастанию, ѕо неубыванию и нажмите ќ . —права от панели RadioGroupl разместите кнопку Button2, дл€ свойства Caption которой задайте значение Ђќтсортироватьї.

¬ нижней части формы разместите Edit3 дл€ вывода отсортированного массива. Ќад объектом Edit3 разместите объект Label3, дл€ свойства Caption которого задайте значение Ђќтсортированный массивї. ¬ыровн€йте компоненты на форме. «афиксируйте положение компонентов на форме, выбрав в меню Delphi команду Edit Ц Lock Controls.

—охраните файл проекта и программного модул€. јналогично предыдущему примеру, прежде чем создавать обработчики событий щелчка мышью по кнопкам Buttonl и Button2, опишите глобальные переменные целого типа N и I, где N Ц размер массива, а I Ц пор€дковый номер элемента массива, а также ћ Ц динамический массив целых чисел.

var
Forml: TForml;
N, I : integer;
M : array of integer; {описание динамического массива целых чисел}

ƒл€ предупреждени€ ошибки ввода в окно Editl нечислового значени€ введите обработку событи€ нажати€ клавиши в окне Editl, чтобы запретить ввод любых символов, кроме цифр от 0 до 9. ƒл€ создани€ процедуры обработчика событи€ нажати€ клавиши в окне Editl выберите в окне »нспектора объектов компонент Editl и на странице Events (—обыти€) дважды щелкните левой кнопкой мыши на пустом поле списка в событии OnKeyPress. ѕосле этого в текст процедуры обработчика событи€ добавьте следующий оператор: if not (Key in ['0'..'9']) then Key:=#O;. ѕолный текст процедуры обработчика событи€ будет выгл€деть следующим образом:

procedure EditlKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9']) then Key:=#0;
end;

—оздание массива целых чисел опишите в процедуре обработчика событи€ щелчка мышью на кнопке Buttonl. ƒл€ создани€ процедуры обработчика событи€ выберите в окне »нспектора объектов объект Buttonl, затем на странице —обыти€ произведите двойной щелчок на пустом поле списка в событии OnClick. ѕосле этого в окне –едактора кода в заготовку процедуры обработчика событи€ введите следующий текст:

procedure TForml.ButtonlClick(Sender: TObject);
begin
Randomize;
N:=StrToInt(Editl.Text); {число элементов массива}
SetLength(M, N); {задать динамическому массиву ћ длину N}
Edit2.Text: = ' ';
for I:= 0 to N-l do {заполнить массив случайными значени€ми целых чисел}
begin
M[I]:= Round(Sin(Random(100))*100);
{присвоить элементу массива случайное значение}
Edit2.Text:=Edit2.Text+' '+Intostr(M[I]);
{вывести элементы массива}
end;
end;

ќбработка событи€ нажати€ кнопки Button2 Ђ¬ычислитьї начинаетс€ с сортировки массива, которую можно записать с помощью оператора цикла for.

ƒл€ хранени€ номера элемента массива, сравниваемого с текущим (имеющим номер I) введем переменную целого типа J. ƒл€ запоминани€ элемента массива при обмене в процессе сортировки введем переменную “.

Ћинейна€ сортировка массива выполн€етс€ путем перестановки элементов в массиве при соблюдении следующих условий: если в неотсортированной части массива найден элемент с номером J, больший, чем элемент с номером I (дл€ сортировки по невозрастанию), или меньший, чем элемент с номером I (дл€ сортировки по неубыванию). ѕоэтому можно записать следующий оператор if then else с составным условием:

if (RadioGroupl.ItemIndex=O) and (M[I]<M[J]) or (RadioGroupl.Itemlndex=l) and (M[I]>M[J]) then

ѕерестановка элементов массива осуществл€етс€ с использованием третьей переменной:

“ := ћ[1]; {запомнить на врем€ значение ћ[1]}
M[I] := M[J];
M[J] := Tmp;

¬ывод отсортированного массива в окне Edit3 можно записать оператором:

for I:=0 to N-l do
Edi t3.Text:=Edi t3.Text+' '+IntToStr(M[I]);

¬ целом текст процедуры сортировки и вывода отсортированного массива будет выгл€деть следующим образом:

procedure TForml.Button2Cli ck(Sender: TObject);
var
J,T : integer;
begin
Edit3.Text: = ' ';
for I:= 0 to N - 2 do {измен€ть размер неотсортированной части массива}
for J:=1+1 to N-l do {сравниваем поочередно 1-й элемент неотсортированной части массива со всеми от I+1-го до конца}
begin {выбор операции в зависимости от значени€ свойства RadioGroupl.Itemlndex}
if (RadioGroupl.ItemIndex=O) and (M[I]<M[J]) or (RadioGroupl.Itemlndex=l) and (M[I]>M[J]) then
{если в неотсортированной части массива нашли J-й элемент, больший чем 1-й (дл€ сортировки по невозрастанию) или меньший чем 1-й (дл€ сортировки по неубыванию)}
begin {обмен€ть местами элементы массива}
“ := ћ[1]; {запомнить на врем€ значение ћ[1]}
ћ[1] := M[J];
M[J] := T;
end;
end;
for I:=0 to N-l do {вывести отсортированный массив}
Edit3.Text:=Edit3.Text+' '+IntToStr(M[I]);
end;

—охраните файлы проекта и программного модул€, откомпилируйте и запустите программу на выполнение. «адава€ различные значени€ числа элементов массива и щелка€ мышью на кнопке —оздать массив, создавайте линейный массив целых чисел. ¬ыбира€ при помощи переключателей в панели RadioGroupl вариант сортировки и щелка€ мышью на кнопке.

ѕосле окончани€ проверки работы приложени€ закройте его окно.


”знать как сэкономить в кризис моно на сайте ekonom-it.ru

Ќетипизированные файлы «адани€ на строковый тип данных Ѕиблиотечный стандартный модуль Graph ”пражнение є1 дл€ обработки строк ”пражнение по созданию и обработке линейного массива ”пражнение дл€ представлени€ двумерных массивов с помощью компонента StringGrid ”пражнение по вводу и обработки элементов массива с использованием StringGrid ”пражнени€ по обработке файлов (упр 1.) ”пражнени€ по обработке файлов (упр 2.) ”пражнени€ по обработке файлов (упр 3.) 


 
     
   
 


ѕриглашаем прин€ть участие в круглом столе!
подробнее   >>>
 

»нститут ћенеджмента, Ёкономики и »нноваций начинает набор на курсы повышени€ квалификации!
подробнее   >>>
 

”важемые студенты јЌќ ¬ѕќ »ћЁи»!
подробнее   >>>
 

Ќачинаетс€ набор на курсы повышени€ квалификации!
подробнее   >>>
 

ѕриглашаем прин€ть участие в конференци€х!
подробнее   >>>
 


все новости...

 


–ассылки Subscribe.Ru
—овременное образование
ѕодписатьс€ письмом