Автор работы: Пользователь скрыл имя, 03 Мая 2013 в 01:32, лабораторная работа
Разработать программу работы с очередью. Программа должна содержать
следующие процедуры, вызываемые из меню:
- построение пустой очереди;
- добавление нового элемента в конец очереди;
- удаление элемента с начала очереди;
- просмотр очереди
Белорусский государственный
университет информатики и
Кафедра ПОИТ
ОТЧЁТ
по лабораторной работе № 3
По дисциплине ОАиП
Вариант №31
Выполнил:
Студент группы 251005
Шейко Игорь Иосифович
Проверил:
Данилова Галина
Минск 2012
Задача №1
Разработать программу работы с
очередью. Программа должна содержать
следующие процедуры, вызываемые из меню:
- построение пустой очереди;
- добавление нового элемента в конец очереди;
- удаление элемента с начала очереди;
- просмотр очереди
Решение
type
och=^ass;
ass=record
zn:string;
next:och;
end;
// Построение пустой очереди
procedure TForm1.N1Click(Sender: TObject);
begin
new(x);
x^.next:=nil;
b:=x;
e:=x;
end;
// Добавление элемента в очередь
procedure TForm2.Button1Click(Sender: TObject);
begin
s:=edit1.Text;
new(x);
e^.next:=x;
x^.zn:=s;
x^.next:=nil;
e:=x;
end;
// удаление элемента
procedure TForm1.N3Click(Sender: TObject);
var
k:word;
begin
if k=idyes then
b:=b^.next;
end;
// просмотр очереди
procedure TForm3.FormActivate(Sender: TObject);
var
q:och;
st:string;
k:integer;
begin
k:=0;
q:=b^.next;
while q^.next<>nil do
begin
inc(k);
stringgrid1.ColCount:=k;
stringgrid1.Cells[k-1,0]:=
stringgrid1.Cells[k-1,1]:=q^.
q:=q^.next;
end;
inc(k);
stringgrid1.ColCount:=k;
stringgrid1.Cells[k-1,0]:=
stringgrid1.Cells[k-1,1]:=q^.
end;
Блок-схемы
Задача №2
Получить выражение в
полученному ПОЛИЗу значение выражения.
Предусмотреть работу с операцией
"степень".
Решение
procedure minus(q:char);
begin
while (otn(q)<=stekov(posl^.zn)) and (posl^.pr<>nil)do
begin
ans:=ans+posl^.zn;
posl:=posl^.pr;
end;
new(x);
x^.zn:=q;
posl^.next:=x;
x^.pr:=posl;
posl:=x;
end;
procedure raschet;
begin
for i:=1 to length(s) do
if had^.next=nil then
begin
new(x);
x^.zn:=s[i];
x^.pr:=had;
x^.next:=nil;
had^.next:=x;
posl:=x;
end
else
if s[i]=')' then
begin
while (posl^.zn<>'(') do
posl:=posl^.pr
end
else
if otn(s[i])>stekov(posl^.zn) then
else
minus(s[i]);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
s:=edit1.Text;
new(x);
x^.next:=nil;
x^.pr:=nil;
had:=x;
ans:='';
rang:=0;
button2.Visible:=true;
raschet;
while posl^.pr<>nil do
begin
ans:=ans+posl^.zn;
posl:=posl^.pr;
end;
form1.Label1.Caption:=ans;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
label5.Visible:=true;
label7.Visible:=true;
for i:=0 to kol do
begin
ia:=form2.stringgrid1.Cells[0,
mas[ord(ia[1])]:=strtofloat(
end;
e:=0;
for i:=1 to length(ans) do begin
if ans[i] in ['a'..'z','A'..'Z'] then
else
end;
stek[1]:=(trunc(stek[1]*100))/
label5.Caption:=floattostr(
end;
Блок схема