Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Навчальна Частина. Прикладна область: Метод упорядкування даних



Прикладна область: Метод упорядкування даних

Постановка задачі: Створити програму виконання простих операцій над одновимірними масивами.

Рекомендації

Під час розробки програмного засобу слід використовувати наступні об’єкти:

· поле ре­да­гування (Edit)

· Мітка (Label)

· Кнопки (Button)

· Поле (Memo)

· Випадаючий список (ComboBox)

· Переключатори (RadioButton)

· Компонент (RadioGroup)

Хід роботи

1. Завантажте середовище візуального програмування Delphi.

2. Змініть заголовок (Caption) форми з “Form1” на “Методи Упорядкування даних” (без лапок).

3. Збережіть виконану на даний момент форму у своїй власній пап­ці (File Þ Save All).

4. Приведіть вигляд форми у відповідності як це показано на рис. 1.

Рис. 1.

5. Зайдіть у влістивість Items компонента ComboBox1 та заповніть поле наступним чином:

Змініть властивість ItemIndex на 0.

6. Створіть обробники подій для полів: Вибір, Обмін, Вставка, Злиття, а також кнопок Button1, Button2, Button3 та введіть для кожного обробника відповідний код:

{Опис глобальних змінних} var Form1: TForm1; {Опис початкових даних} Var a: array[1..300] of integer; b: array[1..500] of integer; c: array[1..800] of integer; n, m, k: integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin {Генератор випадкових чисел} Randomize; {Введення початкових даних} if (Edit1.Text='') then ShowMessage('Введіть початкові дані') else begin n:=StrToInt(Edit1.Text); for i:=1 to n do begin {генеруємо масив випадкових чисел від 0 - 9} a[i]:=Random (10); Memo1.Lines.Add(IntToStr(a[i])); end; end; if Edit2.Text<>'' then begin m:=StrToInt(Edit2.Text); for i:=1 to m do begin b[i]:=Random (20); Memo2.Lines.Add(IntToStr(b[i])); end; end; RadioButton1.Checked:=false; RadioButton2.Checked:=false; RadioButton3.Checked:=false; RadioButton4.Checked:=false; end; procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin {Виведення результату} if n=0 then ShowMessage('Введіть початкові дані') else begin Edit3.Text:=''; Memo3.Lines.Clear; if RadioButton4.Checked=true then begin Edit3.Text:=IntToStr(k); for i:=1 to k do Memo3.Lines.Add(IntToStr(c[i])); end else begin Edit3.Text:=IntToStr(n); for i:=1 to n do Memo3.Lines.Add(IntToStr(a[i])); end; end; end; procedure TForm1.Button3Click(Sender: TObject); begin Form1.Close; end; procedure TForm1.RadioButton1Click(Sender: TObject); Var i, j, r: integer; Begin if (Edit1.Text='') then ShowMessage('Введіть початкові дані') else begin if ComboBox1.Text='Зростання' then begin {Упорядкування за зростанням методом вибору} for i:=1 to n-1 do begin k:=i; for j:=i+1 to n do if a[j]<a[k] then k:=j; r:=a[i]; a[i]:=a[k]; a[k]:=r; end; end else begin {Упорядкування за спаданням методом вибору} for i:=1 to n-1 do begin k:=i; for j:=i+1 to n do if a[j]>a[k] then k:=j; r:=a[i]; a[i]:=a[k]; a[k]:=r; end; end; end; end; procedure TForm1.RadioButton2Click(Sender: TObject); Var i, r: integer; f:boolean; Begin if (Edit1.Text='') then ShowMessage('Введіть початкові дані') else begin if ComboBox1.Text='Зростання' then begin {Упорядкування за зростанням методом обміну} f:=true; while f do begin f:=false; for i:=n downto 2 do if a[i]<a[i-1] then begin r:=a[i];a[i]:=a[i-1];a[i-1]:=r; f:=true; end; end; end else begin {Упорядкування за спаданням методом обміну} f:=true; while f do begin f:=false; for i:=n downto 2 do if a[i]>a[i-1] then begin r:=a[i];a[i]:=a[i-1];a[i-1]:=r; f:=true; end; end; end; end; end; procedure TForm1.RadioButton3Click(Sender: TObject); Var i, j, r: integer; Begin if (Edit1.Text='') then ShowMessage('Введіть початкові дані') else begin if ComboBox1.Text='Зростання' then begin {Упорядкування за зростанням методом вставки} for i:=2 to n do begin k:=i; r:=a[i]; for j:=1 to k-1 do if r < a[j] then begin for m:=k downto j+1 do a[m]:=a[m-1]; a[j]:=r; break; end; end; end else begin {Упорядкування за спаданням методом вставки} for i:=2 to n do begin k:=i; r:=a[i]; for j:=1 to k-1 do if r > a[j] then begin for m:=k downto j+1 do a[m]:=a[m-1]; a[j]:=r; break; end; end; end; end; end; procedure TForm1.RadioButton4Click(Sender: TObject); Var i, j, r: integer; Begin if (Edit1.Text='') then ShowMessage('Введіть початкові дані') else begin {Упорядкування за зростання масиву А} for i:=1 to n-1 do begin k:=i; for j:=i+1 to n do if a[j]<a[k] then k:=j; r:=a[i]; a[i]:=a[k]; a[k]:=r; end; {Упорядкування за зростання масиву В} for i:=1 to m-1 do begin k:=i; for j:=i+1 to m do if b[j]<b[k] then k:=j; r:=b[i]; b[i]:=b[k]; b[k]:=r; end; if ComboBox1.Text='Зростання' then begin {Упорядкування за зростанням методом злиття} i:=1; j:=1; k:=0; while (i <= n) and (j <= m) do if a[i] < b[j] then begin k:=k+1; c[k]:=a[i]; i:=i+1;end else begin k:=k+1; c[k]:=b[j]; j:=j+1;end; if i > n then for i:=j to m do begin k:=k+1; c[k]:=b[i]; end else for j:=i to n do begin k:=k+1; c[k]:=a[j]; end; end else begin {Упорядкування за спаданням методом злиття} i:=n; j:=m; k:=0; while (i >= 1) and (j >= 1) do if a[i] >= b[j] then begin k:=k+1; c[k]:=a[i]; i:=i-1;end else begin k:=k+1; c[k]:=b[j]; j:=j-1;end; if i < 1 then for i:=j downto 1 do begin k:=k+1; c[k]:=b[i]; end else for j:=i downto 1 do begin k:=k+1; c[k]:=a[j]; end; end; end; end;

7. Збережіть проект та запустіть його на виконання.

Введіть у поля Edit1 та Edit2 відповідний діапазон, виберіть метод впорядкування та вкажіть напрям впорядкування «Зростання» чи «Спадання». Натисніть кнопку «Згенерувати» а потім «Вивести».

Рис. 2.





Дата публикования: 2014-11-03; Прочитано: 353 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...