作业帮 > 综合 > 作业

怎么用free pascal做这道题?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/18 01:15:36
怎么用free pascal做这道题?
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了x个1到1000之间的随机整数(x≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入
有2行,第1行为1个正整数,表示所生成的随机数的x个数:
第2行有x个用空格隔开的正整数,为所产生的随机数
输出
第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
样例输入
10
20 40 32 67 40 20 89 300 400 15
样例输出
8
15 20 32 40 67 89 300 400
提示
来源
一维数组
var
     AA:array[1..1000] of integer;
     i,m,x:integer;

Procedure insert(var m:integer;x:integer);  {忽略相同的}
Var I,j:integer;
Begin
if m=0 then begin m:=1; aa[1]:=x; end
else begin
     j:=0;
     If x>aa[m] then begin aa[m+1]:=x; inc(m); end
     Else if x<aa[1] then begin
         For I:=m downto 1 do aa[i+1]:=aa[i];
         Aa[1]:=x;
inc(m);
     End
     Else begin
For I:=1 to m-1 do if (x>aa[i])and(x<aa[i+1] ) then begin j:=I; break; end;
         if j<>0 then begin For I:=m downto j+1 do aa[i+1]:=aa[i]; Aa[j+1]:=x; inc(m); end;
     End;
end;
End;

begin
for i:=1 to 1000 do aa[i]:=0;
m:=0;
randomize;
repeat
x:=random(1000)+1;
insert(m,x);
until m=100;
writeln;
for i:=1 to m do writeln(aa[i]);
end.