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

[Zadatak] Spoljasnja spirala, satna matrica

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Spoljasnja spirala, satna matrica

[ Pregleda: 4837 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

A90

Član broj: 52884
Poruke: 37
*.as54.bi.bih.net.ba.



Profil

icon [Zadatak] Spoljasnja spirala, satna matrica24.03.2005. u 19:15 - pre 232 meseci
Pozdrav svima,naime interesuje me da li bi neko od pregrst strucnjaka na ovom forumu znao kako napraviti program u C++,koji ce za ucitani "n" ispisivati matricu oblika:

n=5

1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

Molim vas to mi je za maturski rad a zaista nemam nikakvu ideju kako da to uradim,pa ako to neko zna,a siguram sam da ima puno takvih molim vas da mi pomognete..
Unaprijed hvala!!

[Ovu poruku je menjao X Files dana 14.04.2009. u 09:27 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica24.03.2005. u 19:46 - pre 232 meseci
To sto tebi treba zove se spoljasnja spirala. Nisi naveo za koju
platformu Windows/Linux/Dos i okruzenje Microsoft/Borland ti
treba resenje.

Ako je u pitanju DOS, resenje vec imas u knjizi Ranka Lazica,
Programski Jezik C kroz primere (davno to bese) ...

 
Odgovor na temu

pesicvladica
Vladica Pesic

Član broj: 50612
Poruke: 3
*.vdial.verat.net.



Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica24.03.2005. u 20:40 - pre 232 meseci
Dodices resenje sutra izmedju 3 i 5.
 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica25.03.2005. u 08:22 - pre 232 meseci
ja koliko vidim ovo nije ono sto je trazeno.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.nat-pool.bgd.sbb.co.yu.



Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica25.03.2005. u 09:50 - pre 232 meseci
brutal force resenje (nisam kompajlirao, nadam se da radi):

Code:

typedef enum { N, S, W, E } DIR;
DIR dir = W;
const int N = 5;
static int m[N][N]; // static inicijalizuje matricu na 0-matricu

int x = 0; y = 0;
for ( int i = 0; i < N*N; ++i)
{
    m[x][y] = i+1;
    
    bool bFindDir = FALSE;
    while( bFindDir )
    {
        switch(dir)
        {
        case N:
            if ( y == 0 || m[x][y-1] == 0 ) 
            {
                dir = W;
            }
            else
            {
                --y;
                bFindDir = TRUE;
            }
            break;
        case S:
            if ( y == N - 1 || m[x][y+1] == 0 ) 
            {
                dir = E;
            }
            else
            {
                ++y;
                bFindDir = TRUE;
            }
            break;
        case W:
            if ( x == N - 1 || m[x+1][y] == 0 ) 
            {
                dir = S;
            }
            else
            {
                ++x;
                bFindDir = TRUE;
            }
            break;
        case E:
            if ( x == 0 || m[x-1][y] == 0 ) 
            {
                dir = N;
            }
            else
            {
                --x;
                bFindDir = TRUE;
            }
            break;
        }
    }
}
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica25.03.2005. u 10:48 - pre 232 meseci
To je maturski rad? Meni vise lici na domaci zadatak...

Ovde je caka kako pretvoriti jedan pravac u drugi. Ako pretpostavimo da je korodinatna nula u gornjem levom uglu, imamo ovu transformaciju:


Code:
x0 y0   x1 y1
1  0    0  1
0  1   -1  0
-1 0    0 -1
0 -1    1  0


Brojevi oznacavaju sledeci korak: (1,0) je desno, (0,1) dole, (-1,0) levo, (0,-1) gore. Pravac se menja na kraju matrice ili kad naidjemo na vec popunjeni element matrice. Popunjavamo elemente matrice pocevsi od koordinate 0,0 i pocetnog pravca "desno". x i y su ovde zapravo delta-x i delta-y.

E, sad, ako malo pazljivije osmotrite gornju tabelu primeticete da y postaje x, a x dobija negativnu vrednost y, tako da promena pravca izgleda ovako:

temp = x;
x = -y;
y = temp;

Pretpostavljam da je sad lako napisati kod...

[Ovu poruku je menjao Mihajlo Cvetanović dana 25.03.2005. u 18:21 GMT+1]
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica25.03.2005. u 13:55 - pre 232 meseci
Ne znam kako ces objasniti profesoru da kod ima samo 4 glavne linije.
Nisam imao C kompajler da testiram, pa sam to uradio u Delphiju i radi dobro.

Sve u svemu to je samo malo zongliranja sa indeksima.
Ako ti treba nesto razjasnisti (komentari linija) javi na PP.

Code:

var
  m:array[1..100,1..100] of integer;
  i, pok, bpok, br:integer;
begin
  N :=6;
  br := n;
  bpok:=n;
  pok :=1;
  while bpok > 0 do
    begin
      for i := 1 to bpok  do
        begin
            m[n-br+1,n-br+i] := pok + i-1;
            m[br,n-br+i] := pok +(bpok*3)- i - 2;
            m[n-br+i,br] := pok + bpok+i-2 ;
            if i> 1 then
              m[n-br+i,n-br+1] := pok +(bpok*4)- i - 3;
        end;
      inc(pok,(bpok-1)*4);
      dec(bpok,2);
      dec(br);
    end;

end;

 
Odgovor na temu

-Sami-
Jezdimir Sim
Skolarac
Beograd

Član broj: 207855
Poruke: 27



Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica07.04.2009. u 22:39 - pre 183 meseci
E ovako imam jedan zadatak koji mi je dao profa da vjezbam,al ja razbih glavu i nekontam kako ga uraditi (jbg jos sam pocetnik),a on nece jos da mi kaze kako to ide :)
Naime treba napisati Satnu matricu,tako da ona na izlazu daje (primjer n=4)

01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07



Testirati za N=8, 9, 11


Koliko znam matrice su nizovi nizova?

i kreiraju se ovako nekako:

................
Code:

int i,j,a[3][3];

for(i=0,i<3,i++);

for(j=0,j<3,j++);

cout<<"Unesi";
cin>>a[i][j];


...........


E sad vjerovatrno tu treba jos mnogo sto sta da se uradi,a ako neko ima vremena da napise (barem malo) bio bih mu zahvalan,poz.

p.s. nije zadaca,nego se spremamo za takmicenje nas par


[Ovu poruku je menjao X Files dana 14.04.2009. u 08:32 GMT+1]
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 878
*.teol.net.



+148 Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica13.04.2009. u 13:54 - pre 183 meseci
Ovaj zadatak je vec bio na takmicenju proslih godina, ali ne bih se zacudio da se opet pojavi. :)

Jedan od najjednostavnijih nacina je da kreiras matricu odgovarajucih dimenzija i inicijalizujes ju sa nulom. Zatim krenes od gornjeg ljevog ugla i krenes na onu stranu na koju ti pokazuje neka varijabla K koja oznacava smjer kretanja (recimo 0 desno, 1 dole, 2 ljevo, 3 gore). Ako je smjer kretanja ok (nije se doslo do granice matrice, ili do vec popunjenog polja) onda u to popunjeno polje upises vrijednost, a ako jeste onda promjenis smjer K i to sve radis dok ne dodjes u situaciju da za ma koji smjer K ne mozes da nadjes prazno polje. Tada program zavrsava sa radom i matrica je popunjena.

 
Odgovor na temu

-Sami-
Jezdimir Sim
Skolarac
Beograd

Član broj: 207855
Poruke: 27



Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica14.04.2009. u 08:18 - pre 183 meseci
Hvala velika :)
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak] Spoljasnja spirala, satna matrica16.06.2009. u 12:41 - pre 180 meseci
Slučajno sam video ovaj thread, pa reko da pokažem svoje rešenje. Radi i za ne kvadratne matrice:

Code:
int _tmain(int argc, _TCHAR* argv[])
{
    int mat[100][100] = {};
    int m = 5, n = 5; // velicina matrice
    int x = 0, y = 0; // pocetna koordinata
    int dx = 1, dy = 0; // pocetni pravac kretanja
    int i, j;

    for (i = 1; i <= m*n; ++i)
    {
        mat[y][x] = i;

        if (x + dx >= m || x + dx < 0 || y + dy >= n || y + dy < 0 || mat[y + dy][x + dx] != 0)
        {
            int temp = dx;
            dx = -dy;
            dy = temp;
        }

        x += dx;
        y += dy;
    }

    for (i = 0; i < n; ++i)
        for (j = 0; j < m; ++j)
            printf("%2d%s", mat[i][j], j < m - 1 ? " " : "\n");
}
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Spoljasnja spirala, satna matrica

[ Pregleda: 4837 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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