pascal问题一则(具体要求如下↓)

来源:百度知道 编辑:UC知道 时间:2024/06/14 05:33:20
对于数组A,输入一个测试数据x,若x存在于数组A中,则把x元素删除;否则将插在相应位置。要求数组仍然有序。(假设数组是有序递增的)

var a : array[1..20000]of longint;
i, x, n, z : longint;

function find1:longint;{找到与所输入的x相同数字的位子}
begin
for i:=1 to n do
if a[i]=x then exit(i);
exit(0);
end;

function find2:longint;{找到相应位置}
begin
for i:=1 to n do
if (a[i]<x)and(a[i+1]>x) then exit(i);
end;

procedure work1;{将相同的数据删除}
begin
for i:=z to n-1 do a[i]:=a[i+1];
dec(n);
end;

procedure work2;{插入数据}
begin
for i:=n+1 downto z+2 do a[i]:=a[i-1];
a[z+1]:=x;
inc(n);
end;

begin
readln(n);{a的长度}
readln(x);
fillchar(a,sizeof(a),$7f);{将数组a赋值为极大值}
for i:=1 to 10 do
a[i]:=i;
if find1>0 then
begin z:=find1; work1; end
else
begin z:=find2; work2; end;
for i:=1 to n do write(a[i],' ');
end.