2013-11-04 37 views
0

我有一個帕斯卡代碼,並將其生成的2D陣列看起來像這樣:修改以帕斯卡代碼的2D陣列

{ . . . 1 2 3 . . . . } 
    { . . 4 5 6 . . . . . } 
    { . 7 8 9 . . . . . . } 
    {101112 . . . . . . . } 
    {1314 . . . . . . . . } 
    {15 . . . . . . . . . } 
    { . . . . . . . . . . } 
    { . . . . . . . . . . } 
    { . . . . . . . . . . } 
    { . . . . . . . . . . } 

每個點表示,它在我的代碼輸出以2D 0或空的地方數組10x10。

,我需要它修改它來生成二維數組,像這樣的(可能會改變):

{ . . . . . 9 162433. } 
    { . . . . 4 10172534. } 
    { . . . 2 5 11182635. } 
    { . . 1 3 6 12192736. } 
    { . . . 4 7 13202837. } 
    { . . . . 8 14212938. } 
    { . . . . . 15223039. } 
    { . . . . . . 233140. } 
    { . . . . . . . 3241. } 
    { . . . . . . . . 42. } 

,並使其在一個週期內工作。

這是我寫的代碼。我卡住了,我只需要修改它的一部分來生成一種新的數組。這裏也強調了這一點。

program massiv2; 
    const num=10; {masiva izmers} 
    var 
    oper,   { izpildama programmas operacija } 
           { oper=3333 beigt    } 
     i,j : integer; {darba imdeksi } 
     wrk: integer ; 
     ms: array[1..num, 1..num] of integer;{array} 
    label MENU, BEIGAS; 
    begin 
    MENU: 
writeln; 
writeln('Programma domata ciklu operatoru un masivu apgusanai '); 
writeln(' 3333 - beigt'); 
writeln(' jebkurs cits skaitlis aizpildit masiva prasito dalu '); 
writeln(' ar vertibam 1 2 3 ... pa horizontali '); 
read(oper); 
if oper=3333 then goto BEIGAS; 
{array operation and calcalus } 
     for i:=1 to num do 
     for j:=1 to num do 
    ms[i,j]:=0; 
     wrk:=1;          
     for i:=1 to 6 do {cycle by rows}   //Modified needed only this part 
     begin         // 
     j:=5-i; if j<1 then j:=1;    // 
     while(j <= 7-i) do {cycle by column}  // 
      begin         // 
      ms[i,j]:=wrk;      // 
      wrk:=wrk+1;       // 
               // 
      j:=j+1        // 
      end;         // 
    end; 
     for i:=1 to num do {array output} 
     begin writeln; 
       for j:=1 to num do 
       write(ms[i,j]:7) 
     end; 
     writeln; writeln(' Lai turpinatu ievadi jebkuru skaitli '); 
     read(j); 
     goto MENU; 
     BEIGAS: 
     end. 

而我該如何使這種代碼中的一種2d數組?

{ . . . . . . . . . . } 
    { . . . . . . . . . . } 
    { . . 212019181716. . } 
    { . . . 109 8 7 15. . } 
    { . . . . 3 2 6 14. . } 
    { . . . . . 1 5 13. . } 
    { . . . . . . 4 12. . } 
    { . . . . . . . 11. . } 
    { . . . . . . . . . . } 
    { . . . . . . . . . . } 

回答

0

好吧,我發現瞭如何在這裏做第一個是 作品不同的是希望線但也不它。

j:=3; 
    for i:=4 to 10 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=4; 
    for i:=4 to 9 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=4; 
    for i:=3 to 8 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=5; 
    for i:=3 to 7 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=5; 
    for i:=2 to 6 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=6; 
    for i:=2 to 5 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
     j:=6; 
    for i:=1 to 4 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=7; 
    for i:=1 to 3 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=7; 
    for i:=1 to 2 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=8; 
    for i:=1 to 2 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 
    j:=9; 
    for i:=1 to 1 do 
    begin 
     ms[i,j]:=wrk; 
     wrk:=wrk+1; 
     j:=j+1 
    end; 

它看起來是這樣的:

0  0  0  0  0  34  41  43  45  0 
    0  0  0  0  25  30  35  42  44  0 
    0  0  0  14  20  26  31  36  40  0 
    0  0  1  8  15  21  27  32  37  0 
    0  0  0  2  9  16  22  28  33  0 
    0  0  0  0  3  10  17  23  29  0 
    0  0  0  0  0  4  11  18  24  0 
    0  0  0  0  0  0  5  12  19  0 
    0  0  0  0  0  0  0  6  13  0 
    0  0  0  0  0  0  0  0  7  0 

另一個問題是有辦法如何優化代碼,使其comapact較小。