Прошу помощи!!! Дан стек от 1 до 10.

[email protected] в категроии Информатика, вопрос открыт 25.06.2018 в 21:52

По заданию всё сделано кроме того,что я не могу написать процедуру которая должна будет менять местами элементы по значению.Есть только по индексу,но она не подходит,надо именно по значению. Например: стек 12 23 '2 4 22 54 '11' 67 9 5
ввели '2'
ввели '11'
стек после замены 12 23 '11' 4 22 54 '2' 67 9 5
код:
Program Stack1;
const n=10;

type stack=array[1..n,1..2] of integer;
var
z:stack;
TOS,code,x,i,a,b:integer;

procedure Init(var z:stack;var TOS:integer);
begin
TOS:=0;

end;

function empty(TOS:integer):boolean;
begin
if TOS=0 then Empty:=true
else empty:=false;

end;

procedure PUSH(var z:stack; var TOS,code,x:integer);//заполнение стека
begin
if TOS=n then
begin
code:=1;
exit;
end;
inc(TOS);
z[TOS,1]:=x;
z[TOS,2]:=tos+1;
CODE:=0;
end;

procedure print(z:stack; tos:integer);//вывод стека
var i,j:integer;
begin
write('Стэк: ');
j:=1;
for i:=1 to TOS do begin
write(z[j,1],' ');
j:=z[j,2];
end;
end;

procedure ZAM(var z:stack;var a,b:integer);//замена A на B в массиве (индексная замена)
var zam1,i:integer;
begin
zam1:=z[a,2];
z[a,2]:=z[b,2];
z[b,2]:=zam1;
zam1:=z[a-1,2];
z[a-1,2]:=z[b-1,2];
z[b-1,2]:=zam1;

end;




begin

INIT(Z,TOS);
for i:=1 to n do
begin
x:=random(20);
PUSH(Z,TOS,code,x); //создание очереди из рандомных чисел

end;writeln;
print(z, tos);
writeln;
write('Введите индекс [1..10] A=');
read(a);writeln;
write('Введите индекс [1..10] B=');
read(b);writeln;
ZAM(z,a,b);
print(z, tos);writeln;

end.

0 ответов

Нет результатов.
Оставлять ответы могут только авторизированные пользователи.
Зарегистрируйтесь или  авторизируйтесь на сайте чтобы оставить ответ на вопрос.