Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
15-1189098483
Nic
2007-09-06 21:08
2007.10.07
Снова про Инет-кошелёк


15-1189162697
Jeer
2007-09-07 14:58
2007.10.07
Несложная задачка


15-1189070224
MaxIvanych
2007-09-06 13:17
2007.10.07
Matlab и Delphi


6-1170928218
tytus
2007-02-08 12:50
2007.10.07
TWebBrowser и Java.


2-1189491949
Washington
2007-09-11 10:25
2007.10.07
Изменение размеров формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский