Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];

Вниз

radiogroup   Найти похожие ветки 

 
rena ©   (2008-05-27 23:32) [0]

unit Unit6;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls,Unit2, Grids, ExtCtrls;

type

 TForm6 = class(TForm)
   Label3: TLabel;
   Button1: TButton;
   Label1: TLabel;
   Label2: TLabel;
   StringGrid1: TStringGrid;
   StringGrid2: TStringGrid;
   RadioGroup1: TRadioGroup;
   RadioGroup2: TRadioGroup;
   RadioGroup3: TRadioGroup;
   RadioGroup4: TRadioGroup;
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 T_Key=integer;
 T_item=integer;
 Sortmas=record
    key:T_key;
    item:T_item;
 end;
 //Основной класс
 TSortClass=class
   a:array of Sortmas;
   RadioGroup3: TRadioGroup;
   StringGrid1: TStringGrid;
 Constructor Create(ar:array of longint);
 procedure otobrajenie1;
 procedure otobrajenie2;
 procedure otobrajenie3;
 procedure zapolnenie;
 procedure Sortirovka;//virtual;abstract;
   end;

 //Классы-наследники
 TSimple=class(TSortClass)
 StringGrid2: TStringGrid;
 constructor Create(ar:array of Longint);
 procedure SimpleSort;
 procedure SimpleSort2;
   end;

 TQuickly=class(TSortClass)
 StringGrid2: TStringGrid;
 constructor Create(ar:array of Longint);
 procedure QSort(var a: array of Sortmas; iLo, iHi: Integer);
 procedure QuicklySort;
 procedure QuicklySort2;
   end;
   
 TSliyanie=class(TSortClass)
 StringGrid2: TStringGrid;
 constructor Create(x:array of Longint);
//процедура разбивки на куски с рекурсией и вызов сортировки
//передаем сам массив,индеск первого и последнего элемента
 procedure Sort(x:array of sortmas;first,last:integer);
 //Расположение по возрастанию
 procedure SliyanieSort2;
 //Расположение по убыванию
 procedure SliyanieSort;
 //Cама сортировка
 procedure SortS(var x:array of sortmas; first,middle,last:integer);
 end;

var
 Form6: TForm6;
 i:integer;
 k:TSortClass;
 l:TSimple;
 q:TQuickly;
 s:TSliyanie;
 ar:array of Longint;

implementation

uses MainUnit1,Unit3,Unit4,Unit5;
{$R *.dfm}

procedure TForm6.Button1Click(Sender: TObject);
begin
if Radiogroup1.ItemIndex=0//Cортировка выбором
then begin//Выделение памяти
 k:=TSimple.Create(ar);
 k.zapolnenie;
 if Radiogroup2.ItemIndex=0//Возрастание
 then l.SimpleSort
 else if Radiogroup2.ItemIndex=1//Убывание
 then l.SimpleSort2;
     end
else if Radiogroup1.ItemIndex=1//Быстрая сортировка
 then begin//Выделение памяти
 k:=TQuickly.Create(ar);
 k.zapolnenie;
 if Radiogroup2.ItemIndex=0//Возрастание
 then q.QuicklySort
 else if Radiogroup2.ItemIndex=1//Убывание
 then q.QuicklySort2
      end
else if Radiogroup1.ItemIndex=2//Cортировка слиянием
 then begin//Выделение памяти
 k:=TSliyanie.Create(ar);
 k.zapolnenie;
 if Radiogroup2.ItemIndex=0//Возрастание
 then
 s.SliyanieSort
 else if Radiogroup2.ItemIndex=1//Убывание
 then s.SliyanieSort2
      end;

if Radiogroup4.ItemIndex=0 then k.otobrajenie1
else if Radiogroup4.ItemIndex=1 then k.otobrajenie2
else if Radiogroup4.ItemIndex=2 then k.otobrajenie3;
end;

procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;

constructor TSliyanie.Create(x:array of Longint);
begin
//Сортирока слияниями(метод фон Неймана)
//Выделение памяти
inherited Create(ar);
end;

...

{TSimple }

//Cортировка вставками
constructor TSimple.Create(ar:array of Longint);
begin
//Создание массива
inherited Create(ar);
end;

procedure TSimple.SimpleSort;
var i,j,k:integer; x:Sortmas;
begin //массив a
StringGrid2.ColCount:=r;
for i:=0 to r-1 do
 begin
k:=i;
x:=a[i];
for j:=i+1 to r do
begin
 if a[j].key <x.key then
begin k:=j; x:=a[j];
a[k]:=a[i]; a[i]:=x;
end;
end;
StringGrid2.Cells[i,0]:=IntToStr(a[i].key);
end;
end;

procedure TSimple.SimpleSort2;
var i,j,k:integer; x:Sortmas;
begin //массив a
StringGrid2.ColCount:=r;
for i:=0 to r-1 do
 begin
k:=i;
x:=a[i];
for j:=i+1 to r do
begin
 if a[j].key<x.key then
begin k:=j; x:=a[j];
a[k]:=a[i]; a[i]:=x;
end;
end;
end;
j:=0;
for i:=r-1 downto 0 do
begin
StringGrid2.Cells[i,0]:=IntToStr(a[j].key);
j:=j+1;
end;
end;

{ TSortClass }

constructor TSortClass.Create(ar:array of longint);
begin
//Выделение памяти
SetLength(a,r);
end;

procedure TSortClass.otobrajenie1;
//Отображение звездочками
var NewForm: TForm3;
begin
NewForm:=TForm3.Create(Application);
end;

procedure TSortClass.otobrajenie2;
//Отображение линиями
var NewForm: TForm4;
begin
NewForm:=TForm4.Create(Application);
end;

procedure TSortClass.otobrajenie3;
//Отображение мозаикой
var NewForm: TForm5;
begin
NewForm:=TForm5.Create(Application);
end;

procedure TSortClass.Sortirovka;
begin
//Cортировка
//i:=i+1;
end;

procedure TSortClass.zapolnenie;
begin
//Заполнение массива
//Setlength(ar,r);
if Radiogroup3.ItemIndex=0 then
for i:=0 to r-1 do
a[i].key:=randmas[i]
else if Radiogroup3.ItemIndex=1 then
for i:=0 to r-1 do
a[i].key:=masgen[i]
else if Radiogroup3.ItemIndex=2 then
for i:=0 to r-1 do
a[i].key:=raspr[i];
StringGrid1.ColCount:=r;
//SetLength(a,r);
for i:=0 to r-1 do
StringGrid1.Cells[i,0]:=IntToStr(a[i].key);
end;

{ TQuickly }

...

при выполнении процедуры zapolnenie происходит ошибка при проверке условия if Radiogroup3.ItemIndex=0 then ... причем нужная радиокнопка помечена. Может, не там объявлен компонент Radiogroup3? При объявлении в описании класса формы компонент вообще определялся как undeclared , прописала в классе TSortClass..


 
engine ©   (2008-05-27 23:39) [1]

почитай Конопку Рэя.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.049 c
15-1210713441
^-k2-^
2008-05-14 01:17
2008.06.22
А я их знаю :)


2-1211881680
123-ий
2008-05-27 13:48
2008.06.22
Заголовок окна


2-1211976674
grav
2008-05-28 16:11
2008.06.22
Сравнение полей DOUBLE PRECISION в запросе


2-1211704597
arreke
2008-05-25 12:36
2008.06.22
scale JPEG как в PhotoShop


15-1210434755
Рваный Башмак
2008-05-10 19:52
2008.06.22
А Ораклоиды здесь есть?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский