задание такое: считывается целых чисел. Сформировать и вывести 2 очереди - парных и непарных чисел. Использовать структуру данных "очередь".
обратите внимание на обработчик события Button1Click. ошибка где то там. мне нужно чтобы в Edit1 предлагалось ввести строку,нажав на кнопку Button2 должна происходить обработка цифр в строке(в мемо 1 отправляются четные цифры, в мемо2- нечетные). Подскажите пожалуйста как єто сделать .проблема в том, что мне в Эдит нужно вводить не одну цифру, а строку цифр через пробел и они должны обрабатыватся(четные цифры в мемо1, нечетные в мемо2). есть какие-то идеи как єто реализовать ?
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,unit2, StdCtrls;
const n=15;
type
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
Label4: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
q1,q2:TQueue;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
S:array[1..n] of char;
i:byte;
begin
Edit1.Text:=s;
for i:=1 to n do
read (S[i]);
if edit1.text<>'' then
if strtoint(edit1.text) mod 2=0 then
q1.qAdd(strtoint(edit1.Text))
else
q2.qAdd(strtoint(edit1.Text))
else
showmessage('введите значение');
edit1.Text:='';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not q1.qempty then
q1.view(memo1)
else
begin
memo1.Lines.Clear;
memo1.Lines.Add('четніх єлементов нет');
end;
if not q2.qempty then
q2.view(memo2)
else
begin
memo2.Lines.Clear;
memo2.Lines.Add('нечетніх єлементов нет');
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
q1.Free;
q2.Free;
form1.Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
q1:=TQueue.Create;
q2:=TQueue.Create;
end;
end.
unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
data=integer; // òèï åëåìåíò³â ÷åðãè
link=^node;
node=record
inf:data; // ³íôîðìàö³éíå ïîëå
next:link; // âêàç³âíèê íà íàñòóïíèé åëåìåíò
end;
TQueue=class
private
begQ:link; //âêàç³âíèê íà ãîëîâó ÷åðãè
endQ:link; //âêàç³âíèê íà õâ³ñò ÷åðãè
public
constructor create; //êîíñòðóêòîð
function qempty:boolean; //ïåðåâ³ðêà ÷è ïîðîæíÿ ÷åðãà
procedure qAdd(elem:data); //äîäàâàííÿ åëåìåíòó
procedure qDel; // âèëó÷åííÿ åëåìåíòó
procedure view(m:Tmemo); //ïåðåãëÿä åëåìåíò³â ÷åðãè
end;
implementation
constructor TQueue.create;
begin
endQ:=nil;
begQ:=nil;
end;
function TQueue.qempty;
begin
result:=begQ=nil;
end;
procedure TQueue.qAdd;
var help:link;
begin
new(help);
help^.inf:=elem;
help^.next:=nil;
if qempty then
begin
endQ:=help;
begQ:=help;
end
else
begin
endQ^.next:=help;
endQ:=help;
end;
end;
procedure TQueue.qDel;
var help:link;
begin
help:=begQ;
if not qempty then
begin
begQ:=begQ^.next;
dispose(help);
end
else showmessage('÷åðãà ïîðîæíÿ');
if begQ=nil then endQ:=nil;
end;
procedure TQueue.view;
var cur:link;
begin
m.Lines.Clear;
cur:=begQ;
while cur<>nil do
begin
m.Lines.add(inttostr(cur^.inf));
cur:=cur^.next;
end;
end;
end.