我有8个数字1、2、3、4、5、6、7、8
现在有一个二维数组a[0..1][0..3]。
我想通过程序,把上述的8个数字放到数组里面。规则是
a[0][0]:=1;a[0][1]:=2……最后的效果:1 2 3 4
            5 6 7 8我的算法如下:
var
  i,j,k:integer;
begin
  for k:=1 to 8 do
  begin
    i:=k div 4;
    j:=(k mod 4)-1;
    a[i][j]:=k;
  end;//for kend;这个算法有问题,如果是k=4,i=1,j=-1,这样4就存放到了a[1][-1]:=4;出错了。而我希望a[0][3]:=4;
后来,我就加了语句,判断i和j的值,如果j:=-1就让i:=i-1;j:=3,var
  i,j,k:integer;
begin
  for k:=1 to 8 do
  begin
    i:=k div 4;
    j:=(k mod 4)-1;
    case j of
    -1:begin
         i:=i-1;
         j:=3;  
       end;
    end;
    a[i][j]:=k;
  end;//for kend;好土啊。谁有好的算法。小弟实在是笨的不行了。

解决方案 »

  1.   

    for k:=0 to 7 do  //......
      begin
        i:=k div 4;
        j:=k mod 4;
        a[i][j]:=k;
      end;
      

  2.   

    var
      i,j,k:integer;
    begin
      for k:=1 to 8 do
      begin
        i:=(k-1) div 4;
        j:=(k-1) mod 4;
        a[i][j]:=k;
      end;//for kend;
    这样好像可以。
      

  3.   

    to pazee(耙子)(今年过年不收礼,收礼只收尿不湿) :for k:=0 to 7 do  //......
      begin
        i:=k div 4;
        j:=k mod 4;
        a[i][j]:=k+1;//这里要加1,就对了
      end;