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

[Zadatak] Obilazenje svih polja sahovske table konjem

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Obilazenje svih polja sahovske table konjem

[ Pregleda: 2109 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nnvlahovic
Nemanja Vlahovic
Prag

Član broj: 72981
Poruke: 13
*.ok.cvut.cz.



Profil

icon [Zadatak] Obilazenje svih polja sahovske table konjem06.02.2008. u 15:45 - pre 197 meseci
Cao svima! E ovako, imam jedan problem i zamolio bih vas i bio bih vam zahvalan mnogo ako biste mogli da mi pomognete da rastumacim ovaj program. Ovo je program gde se konj krece po sahovskoj tabli i mora da obidje sva polja a da pri tom ne stane na isto polje 2 puta. Program radi i sve ali imam taj problem da moram da objasnjavam profesoru "zasto i kako". Ako bi se nasao neko ko ima volje da pomogne bio bih mu zahvalan do beskraja. Hvala jos jednom i pozdrav svima!

Code:

#include<iostream>
#include<iomanip>
#include<conio.h>

#include "exists.h"
#include "possible.h"

using namespace std;



int main()
{

    int count = 1,k,j;

    cout <<"position [from (0,0) to (7,7)]:";
    cin >>row >>col;
    cout << endl;

    board[row][col]=count;


    while(count!=64)
    {
        count++;
        possible();
        exits(count);
    }
    for(j=0;j<=7;j++)
    {
        for(k=0;k<=7;k++)
            cout <<  setw(3) << board[j][k];
        cout <<"\n\n";
    }


    _getch();

    return 0;
}

const int ver[]={-1,-2,-2,-1,1,2,2,1},
          hor[]={2,1,-1,-2,-2,-1,1,2};

int row,col,npos;
int board[8][8],nextij[8][8][8],accessible[8][8];

void possible()
{
    int npos;
    for(int r=0;r<=7;r++)
    {

        for(int c=0;c<=7;c++)
        {
            npos = 0;
            
            for(int i=0;i<=7;i++)
            {
                if(((r+ver[i] >=0) && (r+ver[i] <=7))&&((c+hor[i] >=0) && (c+hor[i] <=7))&&(board[r+ver[i]][c+hor[i]] == 0))
                {
                    
                    nextij[r][c][npos] = i;
                    npos++;
                }
            }
            accessible[r][c] = npos;    
        }
    }    
    
}

#include"variablel.h"


void exits(int l)
{

    int min = accessible[row+ver[nextij[row][col][0]]][col+hor[nextij[row][col][0]]];
    int r = row+ver[nextij[row][col][0]],c=col+hor[nextij[row][col][0]];

    for(int i=1;i < accessible[row][col];i++)
        if(min >= accessible[row+ver[nextij[row][col][i]]][col+hor[nextij[row][col][i]]])
        {
            min =accessible[row+ver[nextij[row][col][i]]][col+hor[nextij[row][col][i]]];
            r = row + ver[nextij[row][col][i]];
            c = col + hor[nextij[row][col][i]]; 
        }
        
        
        board[r][c]=l;
        row = r;
        col = c;
}

EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to:

[code]
int main ( int argc, char *argv[] )
{
// ...
return 0;
}
[/code]

[Ovu poruku je menjao X Files dana 07.02.2008. u 07:08 GMT+1]
Nemanja CZ
 
Odgovor na temu

nnvlahovic
Nemanja Vlahovic
Prag

Član broj: 72981
Poruke: 13
*.ok.cvut.cz.



Profil

icon Re: [Zadatak] Obilazenje svih polja sahovske table konjem07.02.2008. u 23:23 - pre 197 meseci
Ne treba nista da se odradi, skontao sam same sve... Pozdrav svima!
Nemanja CZ
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Obilazenje svih polja sahovske table konjem

[ Pregleda: 2109 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

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