主题:pascal程序难题
1l2j3y
[专家分:0] 发布于 2009-08-01 17:28:00
小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下:
1、这根钢管一定要是仓库中最长的;
2、这根钢管一定要是最长的钢管中最细的;
3、这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近)。
相关的资料倒是有,可是,手工从几百份钢管中选出符合要求的那根……
要不,还是请你编写个程序来帮他解决这个问题吧。
回复列表 (共1个回复)
沙发
tzhlryy [专家分:270] 发布于 2009-08-01 18:10:00
这题有3个要求,只须将3个数据用数组存放,然后竟行3个循环判断即可
程序如下:
var
n,i,j,x,y,z,max:integer;
a,b,c:array[1..1000] of integer;//长度,细度,编码
begin
read(n);//N跟钢管 \
max:=1;//MAX保存的只是I的值,最后判断变成a[max]即可 /
for i:=1 to n do \ 初始化,存储数据
read(a[i],b[i],c[i]);//存储数据 /
for i:=1 to n do
if a[i]>a[max] then max:=i;//第一次循环,对长度进行判断,找出最长者
x:=a[max];//保存数据,因为为了最终判断,只得先将a[max]变成0
a[max]:=0;
max:=1;
for i:=1 to n do
if b[i]<b[max] then max:=i;//第二次循环,找出最细者
y:=b[max];//保存数据
b[max]:=0;
max:=1;
for i:=1 to n do
if c[i]>c[max] then max:=i;//第三次循环,找出编码最大者
z:=c[max];//保存数据
c[max]:=0;
for i:=1 to n do
if a[i]*b[i]*c[i]=0 then//最终判断(前面以将之最的原始数据变成0,只须判断a[i],b[i],c[i]相乘是否得0,如果的0,表示此管为目标管
begin
writeln('shi di ',i,' geng gan zi'); \
write('chang du wei:',x,','); / 输出
write('xi du wei:',y,','); \
write('bian ma wei:',z,'.'); /
break;
end;
end.
第一次做,可能有点失误,lz包涵
我来回复