Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

Помогите решить задачку на турбо паскале   Найти похожие ветки 

 
zero   (2007-09-12 09:33) [0]

Есть двумерный квадратный массив размерностью n. Необходимо заполнить его данными вот таким образом, пример для n=4
0 0 0 10
0 0 9 6
0 8 5 3
7 4 2 1
Помогите плиз, а то у меня уже крыша едет. Вроде задача на первый взгляд простая, но вся сложность в том что я не могу заполнить массив именно в такой последовательности.


 
Ega23 ©   (2007-09-12 09:35) [1]

Показывай, как делаешь


 
zero   (2007-09-12 09:43) [2]

for i:=1 to n do
begin
 for j:=1 to n do
 begin
    if i+j>n then
      m[i,j]:=1;
 end;
end;
Пока вот только до этого додумал, то есть единичками заполняються только нужные ячейки но вот как сделать что бы последовательно заполнялся масив додуматься пока не могу (


 
zero   (2007-09-12 09:45) [3]

for i:=1 to n do
begin
 for j:=1 to n do
 begin
    if i+j>n then
      m[i,j]:=1;
 end;
end;
Пока вот только до этого додумал, то есть единичками заполняються только нужные ячейки но вот как сделать что бы последовательно заполнялся масив додуматься пока не могу (


 
Jeer ©   (2007-09-12 10:08) [4]


> zero   (12.09.07 09:33)


А ты задачу уточни:
требуется
- заполнить массив указанными значениями в определенных ячейках произвольным методом;
- заполнить * двигаясь по строкам или столбцам, или диагоналям или конем или..


 
korneley ©   (2007-09-12 10:14) [5]

как - нибудь так

 cnt := 1;
 for i := n downto 1 do begin
   row := n;
   col := i;
   while (col <= n) and (row >= 1) do begin
     a[col, row] := cnt;
     inc(cnt);
     inc(col);
     dec(row);
   end;
 end;


 
korneley ©   (2007-09-12 10:18) [6]

Пардон, обшибся малость:
a[row, col] := cnt;


 
alshtam ©   (2007-09-12 10:23) [7]

procedure TForm3.Button1Click(Sender: TObject);
var
 a:array[1..4,1..4] of integer;
 i,j,s,s1,d,d1:integer;
begin
 s1:=1;
 s:=s1;
 d1:=2;
 d:=0;
 for I:=1 to 4 do
 for j:=1 to 4 do
  a[i,j]:=0;

 for I:=4 downto 1 do
 begin
   for j:=4 downto 1 do
   begin
     s:=s+d;
     a[i,j]:=s;
     d:=d+1;
     if j=4-i+1 then break;
   end;
   s1:=s1+d1;
   d:=d1-1;
   s:=s1-d;
   d1:=d1+1;
 end;
end;


 
novill ©   (2007-09-12 10:29) [8]

var maxi,maxj,ci,cj,i:integer;
begin
maxi:=m.ColCount-1;
maxj:=m.RowCount-1;
ci:=maxi;
cj:=maxj;
m.Cells[ci,cj]:="1";
for i:=2 to maxv.Value do
begin
 if (ci+1)>maxi
  then begin ci:=maxi-(maxi-cj)-1; cj:=maxj  end
  else begin dec(cj); inc(ci); end;
 m.Cells[ci,cj]:=IntToStr(i);
end;
end;


осталось только чуть причесать.


 
iam   (2007-09-12 10:34) [9]

0 0 0 10
0 0 9 6
0 8 5 3
7 4 2 1

можешь так и обходить по диагонялям
1 диагональ: (n,n)
2 диагональ: (n-1,n), (n,n-1)
3 диагональ: (n-2,n),(n-1,n-1),(n,n-2)
...
n диагональ: ...

код

var i, j, counter: Integer;
begin
...
counter := 1;
for i := 1 to n do begin
 for j := 1 to i do begin
   Arr[n+1-j, n-i+j] := counter;
   Inc(counter);
 end;
end;


 
iam   (2007-09-12 10:41) [10]

const n = 7;
Arr: Array[1..n, 1..n] of Integer;


 
zero   (2007-09-12 13:25) [11]

Jeer ©   (12.09.07 10:08) [4]

> zero   (12.09.07 09:33)

А ты задачу уточни:
требуется
- заполнить массив указанными значениями в определенных ячейках произвольным методом;
- заполнить * двигаясь по строкам или столбцам, или диагоналям или конем или..
--------------------
Заполнять можно любым методом главное что бы последовательность чисел была именно такая, то есть сначало одна диогональ потом следующая.

Ладно всем спасибо, сегодня вечером попробую.



Страницы: 1 вся ветка

Текущий архив: 2007.10.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
15-1189263351
Анатолий К.
2007-09-08 18:55
2007.10.07
Информация о билде в Delphi.


4-1175630984
LuceferAB
2007-04-04 00:09
2007.10.07
как показать форму не отбирая фокуса


2-1189184453
Dr. Andrew
2007-09-07 21:00
2007.10.07
как извлечь корень n-ной степени в Делфи!


15-1189275380
OlegZp
2007-09-08 22:16
2007.10.07
Помогите восстановить Internet Explorer


3-1180523664
DVM
2007-05-30 15:14
2007.10.07
Никак не могу понять, где ошибка в INSERT INTO