|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Массивы. Сортировка слиянием
Здравствуйте и доброго времени суток. Пишу курсовую по делфи, застрял на сортировке массива. У меня есть задание, создать массив на 100 элементов случайных чисел, умножить его на коэффициент к1 и вывести в мемо1 (Это уже есть как бы). Но потом нужно его отсортировать по методу слитья и отсортированный массив вывести в мемо 2. С последним "массив вывести в мемо 2" проблем нет, а вот с сортировкой довольно таки чувствую. Как лучше будет сделать? В делфи я человек новый как и на форуме.
Это участок всей обработки действий с массивом: Код:
unit unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; Memo5: TMemo; Memo6: TMemo; Edit1: TEdit; Edit2: TEdit; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Chart1: TChart; Button7: TButton; Button8: TButton; Button9: TButton; Image1: TImage; LabeledEdit1: TLabeledEdit; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; i, r: integer; f:boolean; mas_a: array[1..100] of real; mas_b: array[1..100] of real; implementation {$R *.dfm} //старт1 procedure TForm1.Button1Click(Sender: TObject); var k1: Real; begin Memo1.Clear; Memo2.Clear; Label2.Caption := LabeledEdit1.Text; k1 := StrToFloatDef(Edit1.Text, 0); if k1 = 5 then begin //массив А - Memo1 randomize; for i := 1 to 100 do mas_a[i]:=random * k1; Memo1.Clear; for i := 1 to 100 do begin Memo1.Lines.Add(FloatToStr(mas_a[i])); end; //массив А - Memo2 Сортированый слитьем end else begin MessageDlg('Введіть коефіцієнт К1 згідно зі своїм варіантом', mtError, [mbOk], 0); end end; //очищення1 procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Clear; Memo2.Clear; end; //Старт2 procedure TForm1.Button3Click(Sender: TObject); var k2: Real; begin Memo3.Clear; Memo4.Clear; k2 := StrToFloatDef(Edit2.Text, 0); if k2 = 12 then begin //массив B - Memo3 randomize; for i := 1 to 100 do mas_b[i]:=random * k2; Memo3.Clear; for i := 1 to 100 do begin Memo3.Lines.Add(FloatToStr(mas_b[i])); end; //массив B - Memo4 Сортированый Бульбашкой Begin For i:=1 to 100 do readln(mas_b[i]); Repeat f:=true; For i:=1 to 99 do If mas_b[i]>mas_b[i+1] then Begin r:= mas_b[i]; mas_b[i]:=mas_b[j]; mas_b[j]:=r; f:= false; End; Until f; For i:=1 to 100 do Writeln(mas_b[i]:100); End. end else begin MessageDlg('Введіть коефіцієнт К2 згідно зі своїм варіантом', mtError, [mbOk], 0); end end; //Очищення2 procedure TForm1.Button4Click(Sender: TObject); begin Memo3.Clear; Memo4.Clear; end; //Старт3 procedure TForm1.Button5Click(Sender: TObject); begin end; //Очищення3 procedure TForm1.Button6Click(Sender: TObject); begin Memo5.Clear; Memo6.Clear; end; //Створеня графіка procedure TForm1.Button7Click(Sender: TObject); begin end; //Очищеня графіка procedure TForm1.Button8Click(Sender: TObject); begin end; //Вихід procedure TForm1.Button9Click(Sender: TObject); begin Close; end; end. Массивы mas_a, mas_b отсортировать Последний раз редактировалось Nevil_White, 30.10.2012 в 07:37. |