作业帮 > 综合 > 作业

【基础】去除重复数字 Pascal

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/05 19:49:48
【基础】去除重复数字 Pascal
给你N个数(n<=100),每个数都在(0~1000)之间,其中由很多重复的数字,请将重复的数字只保留一个,并将剩下的数由小到大排序并输出.
输入
输入有2行,第1行为1个正整数,表示数的个数:N 第2行有N个用空格隔开的整数.
输出
输出也是2行,第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
program ygb;
var a[0..1000] of integer; i,n,x:integer;
begin
for i:=0 to 1000 do a[i]:=-1;
read(n);
for i:=1 to n do
begin
read(x);
a[x]:=0;
end;
for i:=0 to 1000 do
if a[i]-1 then write(i,' ');
end.
程序不长,能看明白吧.
因为数字范围不大,所以定义了0~1000的数组,先全部赋值为-1表示该项没有数,读数字的时候把对应的数组单元修改为0,表示这个单元输入数字了,最后输出为0的部分.
巧妙的解决了两个问题,一是去处重复,二是排序,都不需要编写具体的代码,自然就是满足要求的结果.