回 帖 发 新 帖 刷新版面

主题:pascal程序难题

小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下:
1、这根钢管一定要是仓库中最长的;
2、这根钢管一定要是最长的钢管中最细的;
3、这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近)。
相关的资料倒是有,可是,手工从几百份钢管中选出符合要求的那根……
要不,还是请你编写个程序来帮他解决这个问题吧。

回复列表 (共1个回复)

沙发

这题有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包涵

我来回复

您尚未登录,请登录后再回复。点此登录或注册