作业帮 > 综合 > 作业

求N个整数的平均数、众数和中位数 用pascal,我只学过pascal

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/01 13:54:26
求N个整数的平均数、众数和中位数 用pascal,我只学过pascal
求N个整数的平均数,众数和中位数.小知识:* 众数 如有9个数:17 13 17 9 17 17 3 16 17  17出现的次数最多,即为这组数的众数.* 中位数 如有9个数:102 170 96 90 97 106 110 182 100  将这9个数按一定的顺序(从大到小或从小到大)排列后得到: 182 170 110 106 102 100 97 96 90  正中间的一个数是102,102是这组数的中位数. 而这10个数:106 99 104 120 107 112 33 102 97 100  按一定顺序排列后得到:120 112 107 106 104 102 100 99 97 33  正中间有两个数:104 102,中位数就是这两个数的平均数,即(104+102)/ 2 = 103.
输入
第一行为整数N(5
求N个整数的平均数、众数和中位数 用pascal,我只学过pascal
program DoingData;
var
n :longint;
sum:longint;
n1 :real;
n2 :longint;
n3 :real;
a :array[0..1000] of longint;
f :array[0..100] of longint;
procedure input();
var
i:longint;
begin
readln(n);
sum:= 0;
for i:= 1 to n do
begin
read(a[i]);
inc(f[a[i]]);
inc(sum,a[i]);
end;
end;
procedure print_n1();
begin
n1:= sum / n;
write(n1:0:2,' ');
end;
procedure print_n2();
var
max:longint;
i :longint;
begin
max:= f[1];
for i:= 2 to n do
if f[i] > max then
begin
max:= f[i];
n2:= i;
end;
write(n2,' ');
end;
procedure print_n3();
var
mid1:longint;
mid2:longint;
procedure qsort(s,e:longint);
var
i,j,mid:longint;
begin
i:= s;
j:= e;
mid:= a[(i + j) div 2];
while i mid do
inc(i);
while a[j] < mid do
dec(j);
if i s then qsort(s,j);
end;
begin
qsort(1,n);
if odd(n) then
writeln(a[(1 + n) div 2])
else
begin
mid1:= a[(1 + n) div 2];
mid2:= a[(1 + n) div 2 + 1];
n3:= (mid1 + mid2) / 2;
writeln(n3:0:1);
end;
end;
begin
input;
print_n1;
print_n2;
print_n3;
end.
再问: 还是错的,不信你看: 运行编号 用户 问题 结果 内存 耗时 语言 代码长度 提交时间 471692 pengbo 1180 答案错误11% 232 16 Pascal 2147 B 2012-01-25 07:52:50
再答: begin qsort(1, n); if odd(n) then writeln(a[(1 + n) div 2]) else begin ******** mid1:= a[(1 + n) div 2]; ******** mid2:= a[(1 + n) div 2 + 1]; n3:= (mid1 + mid2) / 2; writeln(n3: 0: 1); end; end; 有*的地方改成mid1:= a[n div 2]; mid2:= a[n div 2 + 1]; 再试试,应该对了
再问: 还是错的: 用户 问题 结果 内存 耗时 语言 代码长度 提交时间 pengbo 1180 答案错误11% 232 20 Pascal/Edit 2197 B 2012-01-26 07:45:59
再答: procedure print_n2(); var max: longint; i : longint; begin max:= f[1]; ******n2:= 1; 这里加上 for i:= 2 to n do if f[i] > max then begin max:= f[i]; n2:= i; end; write(n2, ' '); end;
再问: 还错的: pengbo 1180 答案错误22%
再答: 求网址,自己调
再问: oj.jzxx.net