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

[Zadatak] Kretanje kraljica i skakaca

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Kretanje kraljica i skakaca

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Bootta
Bootta Ris
ucenik
Dob

Član broj: 143030
Poruke: 11
87.250.117.*

ICQ: 395996430


Profil

icon [Zadatak] Kretanje kraljica i skakaca23.04.2007. u 17:26 - pre 206 meseci
Evo primjer kako sam napravio program koji odreljuje polja na koja moze da dodje kraljica i t predstavio vizuelno:
Code:

#include<conio.h>
#include<math.h>
int suma(int x[],int n)
{
int i,suma;
for(i=0,suma=0;i<n;i++)
suma+=x[i];
return suma;
}
main()
{
int n,m,i1,i2,x,y,i;
int sredina();
char niz[9][9];
printf("   1 2 3 4 5 6 7 8\n   - - - - - - - -\n1 | | | | | | | | |\n   - - - - - - - -\n2 | | | | | | | | |\n   - - - - - - - -\n3 | | | | | | | | |\n   - - - - - - - -\n4 | | | | | | | | |\n   - - - - - - - -\n5 | | | | | | | | |\n   - - - - - - - -\n6 | | | | | | | | |\n   - - - - - - - -\n7 | | | | | | | | |\n   - - - - - - - -\n8 | | | | | | | | |\n   - - - - - - - -");
printf("\n\nUnesite broj redova(n) i broj kolona(m) (0<=n,m=<8): ");
scanf("%d%d",&n,&m);
printf("\nUnesite poziciju kraljice(y,x)(1<=n,m=<8):");
scanf("%d%d",&y,&x);
printf("\nSada se niz(ovi) ucitava(ju);\n");
for(i1=1;i1<=n;i1++)
{
for(i2=1;i2<=m;i2++)
{
if(i1==y||i2==x||abs(y-i1)==abs(x-i2))
{
niz[i1][i2]='*';
goto step;
}
niz[i1][i2]='0';
step:
}
}
printf("Sada se niz(ovi) ispisuje/ju: \n");
printf(" 0 = polja na koja kraljica ne moze doci\n");
printf(" * = polja na koja kraljica moze doci\n");
printf(" k = pozicija kraljice\n");

niz[y][x]='k';
printf("     ");
for(i=1;i<=m;i++)
printf("%d ",i);

for(i1=1;i1<=n;i1++)
{
printf("\n     ");
for(i=1;i<=m;i++)
printf("- ");
printf("\n%d   |",i1);
for(i2=1;i2<=m;i2++)
{
printf("%c|",niz[i1][i2]);
}
}
printf("\n    - - - - - - - -");
getch();
}

Jel neko zna napravit program koji ce odredit za koliko ce najmanje poteza konj koji stoji pocetnoj poziciji(n,m) doci na odredjenu poziciju(n,m)
n=redni broj reda
m=redni broj kolone
 
Odgovor na temu

igac
Banjaluka

Član broj: 415
Poruke: 562
*.teol.net.



+2 Profil

icon Re: [Zadatak] Kretanje kraljica i skakaca23.04.2007. u 23:29 - pre 206 meseci
u 8*8 oznacis sva polja sa -1, pocetno polje sa 0 i onda pocnes od tog 0 polja i skaces (kako vec konj moze skakati, 8 mogucih skokova) sve dok ne skocis na polje[xe][ye] (na polje na koje trebas doci konjem)... kada skocis na to bolje izaces iz whilea i procitas onda samo taj broj :) uglavnom nesto ovako kao ovo dole...
Code:

u mainu stavis nesto ovako...
...
   for (i=1;i<=8;i++)
   {
    for (j=1;j<=8;j++)
     polja[i][j]=-1;
   }
   polja[xs][ys]=0;


   i=j=0;

   while (polja[xe][ye]==-1)
   {
    next(i);
    i++;
   }
   printf("\nMinimalan broj skokova je: %d\n",polja[xe][ye]);
...
gdje su ti xs i ys koordinate za "start" konja a xe i ye za "end"...

... 
void seti(int x, int y, int z)
{

     if ((x>0) && (x<9) && (y>0) && (y<9) && (polja[x][y]==-1))
      polja[x][y]=z;
}


void next(int step)
{
     int f,g;

      for (f=1;f<9;f++)
      {
         for (g=1;g<9;g++)
         {
          if (polja[f][g]==step)
          {


           seti(f-2,g-1,step+1);
           seti(f-2,g+1,step+1);
           seti(f+2,g-1,step+1);
           seti(f+2,g+1,step+1);
           seti(f-1,g-2,step+1);
           seti(f+1,g-2,step+1);
           seti(f-1,g+2,step+1);
           seti(f+1,g+2,step+1);
          }
         }
      }
}
...


to sam i ja kuckao prije par godina za neki 'domaci zadatak' pa eto da ti bas ne paste cijeli kod...

"nice town, i'll take it..."
 
Odgovor na temu

3MAJ86
Marko Radić
Business Development Manager, Beauty
Industry
München

Član broj: 46087
Poruke: 253
*.adsl-1.sezampro.yu.

Sajt: marko-radic.blogspot.com


+137 Profil

icon Re: [Zadatak] Kretanje kraljica i skakaca25.04.2007. u 19:20 - pre 206 meseci
Probaj da ovo uradiš uz pomoć graf-a, metodom obilaska 'u širinu' ćeš sigurno dobiti najkraći put. Graf ćeš najlakše pretstaviti preko matrice 8*8 gde je čvor polje na tabli, a u vezi će biti oni čvorovi na koje možeš doći jednim potezom sa trenutnog polja na kome se nalaziš.

Malo teorije nije na odmet :)
when there is a why there is no how
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Kretanje kraljica i skakaca

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

Postavi temu Odgovori

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