Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Matrica

[es] :: Pascal / Delphi / Kylix :: Matrica

[ Pregleda: 6185 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.225.EUnet.yu



+2 Profil

icon Matrica07.06.2002. u 21:51 - pre 266 meseci
Ima li neko ideju kako da napišem sledeći program u Pascalu:

Data je kvadratna matrica (2n+1)x(2n+1) napisati program za štampanje matrice spiralno od centralnog člana.

poz.
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.177.EUnet.yu



+3 Profil

icon Re: Matrica07.06.2002. u 23:48 - pre 266 meseci
Citat:
kajla:
Ima li neko ideju kako da napišem sledeći program u Pascalu:

Data je kvadratna matrica (2n+1)x(2n+1) napisati program za štampanje matrice spiralno od centralnog člana.

poz.


Koristi rekurziju koja ce da izgleda otprilike ovako:
imaces jos jednu globalnu matricu (2n+1)x(2n+1) tipa boolean i sve clanove postavis na false. posle pozoves rekurziju koja ce imati u zaglavlju
(i,j:integer; smer:integer);

Na pocetku procedure postavis u globalnoj matrici vrednost clana na true.
Smer ti je jedna od cetiri cifre (1, 2, 3 ili 4). Na pocetku je smer 1 i oznacava desno. 2 je dole, 3 je levo i 4 je desno. sad ako mozes da ides od smera 1 pozoves rekurziju od sledeceg clana pa posle istampas trenutni clan. Ako ne moze smer 1 onda ides 2 pa 3 pa 4.

Znaci ako ti je matrica 5x5 a trenutno pozvana procedura od npr. (2,4,1), videces da ne mozes vise desno pa ces morati dole i pozoves ponovo tu istu proceduru a na kraju odstampas taj clan.

Mozes da se kreces u nekom smeru samo ako je taj sledeci clan u onoj drugoj globalnoj matrici false.

 
Odgovor na temu

Makojdis
Stefanovic Milos
Kragujevac

Član broj: 78
Poruke: 302
*.ptt.yu



Profil

icon Re: Matrica09.06.2002. u 17:31 - pre 266 meseci
Evo ti kod koji pravi spiralnu matricu n*n ali od prvog clana

Code:


Program spiralna_matrica;
var
a:array[1..10,1..10]of integer;
i,j,k,l,p,s,n,b:integer;
begin
write('Unesite broj redova: ');
readln(n);
for p:=1 to n div 2 do
begin
{*** Prvi red ***}
for i:=p to n-p+1 do
begin
 b:=b+1;
 a[p,i]:=b;
end;
{*** Drugi red ***}
for j:=p+1 to n-p+1 do
begin
 b:=b+1;
 a[j,n-p+1]:=b;
end;
{*** Treci red ***}
for k:=n-p downto p do
begin
 b:=b+1;
 a[n-p+1,k]:=b;
end;
{*** Cetvrti red ***}
for l:=n-p downto p+1 do
begin
 b:=b+1;
 a[l,p]:=b;
end;      end;
{************Stampanje*********}
for i:=1 to n do
begin
 writeln;
 begin
 for j:=1 to n do
 write('  ',a[i,j]);
end;  end;
readln;
end.


ovde samo treba da ispravis da ti ne upisuje brojeve od pocetka vec ides od kraja pa sve do 0 for i:=n*n down to 0
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Matrica

[ Pregleda: 6185 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.