题意明白了,好象应该这样写
     1     2    3     4    5      6     7    8   
甲  白    夜    休    白    夜    休    白   夜   
乙  夜    休    白    夜    休    白    夜   休   
丙  休    白    夜    休    白    夜    休   白    
Right?

解决方案 »

  1.   

    这样吧:
    计算100天内的排班,pik[i,1]为星期几,pik[i,2]甲的排班,pik[i,3]乙的排班,
    pik[i,4]丙的排班:
    var
      pik : array [1..100,1..4] of string[10];
      i,j,k, multer1,multer2,multer3: integer;
    begin
      multer1:= 0;
      multer2:= 1;
      multer3:= 2;
      for i:=1 to 100 do
      begin
        case (i mod 7) of
          1: pik[i, 1]:= '星期一';
          2: pik[i, 1]:= '星期二';
          3: pik[i, 1]:= '星期三';
          4: pik[i, 1]:= '星期四';
          5: pik[i, 1]:= '星期五';
          6: pik[i, 1]:= '星期六';
          7: pik[i, 1]:= '星期七';
          end;
        case ((multer1+i) mod 3) of
              1: pik[i, 2]:= '白班';
              2: pik[i, 2]:= '夜班';
              3: pik[i, 2]:= '休息';
          end;
        case ((multer2+i) mod 3) of
              1: pik[i, 3]:= '白班';
              2: pik[i, 3]:= '夜班';
              3: pik[i, 3]:= '休息';
          end;
        case ((multer3+i) mod 3) of
              1: pik[i, 4]:= '白班';
              2: pik[i, 4]:= '夜班';
              3: pik[i, 4]:= '休息';
          end;
        end;
    end;
      

  2.   

    搞错了,应该是:
    var
      pik : array [1..100,1..4] of string[10];
      i,j,k, multer1,multer2,multer3: integer;
    begin
      multer1:= 0;
      multer2:= 1;
      multer3:= 2;
      for i:=1 to 100 do
      begin
        case (i mod 7) of
          1: pik[i, 1]:= '星期一';
          2: pik[i, 1]:= '星期二';
          3: pik[i, 1]:= '星期三';
          4: pik[i, 1]:= '星期四';
          5: pik[i, 1]:= '星期五';
          6: pik[i, 1]:= '星期六';
          0: pik[i, 1]:= '星期七';
          end;
        case ((multer1+i) mod 3) of
              1: pik[i, 2]:= '白班';
              2: pik[i, 2]:= '夜班';
              0: pik[i, 2]:= '休息';
          end;
        case ((multer2+i) mod 3) of
              1: pik[i, 3]:= '白班';
              2: pik[i, 3]:= '夜班';
              0: pik[i, 3]:= '休息';
          end;
        case ((multer3+i) mod 3) of
              1: pik[i, 4]:= '白班';
              2: pik[i, 4]:= '夜班';
              0: pik[i, 4]:= '休息';
          end;
        end;
    end;
      

  3.   

    I think...
    问题的卡口在月和月之间如何接上!RIGHT?
      

  4.   

    zzy73(地平线),理解透彻,洞悉清楚,可是答案是什么呢?
    这个问题对我来说比申奥更重要!
      

  5.   

    是N人吗?我没上个班,我不知如果是4个人是AD一班,还是BD一班,还是怎样安排,能不能细一点.
      

  6.   

    to dzogchen(雪茹)
    如果是N人,有丁很怪吗?
      

  7.   

    好像挺简单,现把一个人的排班搞清楚,现设定一个排班的为例:
    对甲来说排班周期为T=3,先确定上第一个班的日期,假如为2001-7-16,则根据周期来算,
    2001-7-19与2001-7-16上的班是一样的,以此类推2001-7-16的任意日期都可推算出他
    应该上的班为:
       (sDate-(2001-7-16)+1) mod 3=0  上排班中的第一个班
       (sDate-(2001-7-16)+1) mod 3=1  上排班中的第二个班
       (sDate-(2001-7-16)+1) mod 3=2  上排班中的第三个班sDate为2001-7-16后的任意日期,
      

  8.   

    更正:
      (sDate-(2001-7-16)) mod 3=0  上排班中的第一个班
      (sDate-(2001-7-16)) mod 3=1  上排班中的第二个班
      (sDate-(2001-7-16)) mod 3=2  上排班中的第三个班
      

  9.   

    多日没来了!
    TO dzogchen
    你是否为了要出结果报表?