Прошу помощи!!! Дан стек от 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 ответов
Зарегистрируйтесь или авторизируйтесь на сайте чтобы оставить ответ на вопрос.