Author Topic: ZADANIA Z predmetu PROGRAMOVANIE  (Read 204737 times)

watt

  • Newbie
  • *
  • Posts: 16
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #450 on: 01.05.2010, 01:40:29 »
zdravim... karla mam v podstate celeho hotoveho co sa tyka funkcii.. jeden problem co mam je pri nacitavani zo suboru... prvy riadok uz mam
Code: [Select]
void turnOn(char *path){     
  FILE *fp;
  fp = fopen("input.kw","r");
  fscanf(fp,"%d %d %d %d %c %d",&world.height,&world.width,&karel.x,&karel.y, &karel.direction, &karel_beepers);
  strncpy(krok,"turnOn()",10);
  draw();
       }
  .. to co neviem je ako nacitat zvysok sveta... aj tomu ako to je vysvetlene na http://stargate.cnl.tuke.sk/~mirek/pvjc/scenarios/10/index.html celkom nerozumiem... viem, ze plno ludi to ma tak by som vam bol vdacny :)

cenki

  • Guest
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #451 on: 01.05.2010, 02:03:59 »
zdravim... karla mam v podstate celeho hotoveho co sa tyka funkcii.. blablabla
Code: [Select]
   char z=0;
   z = getc(fp);
   while (z != EOF) {
      if(z=='B'){
         int i, j, b;
         fscanf(fp,"%d %d %d", &j,&i,&b);
         world[height-i][j-1]=b;
      };
      if(z=='W'){
         int i, j;
         fscanf(fp,"%d %d", &j,&i);
         world[height-i][j-1]=-1;
      };
      z = getc(fp);
   }

Palike

  • Full Member
  • ***
  • Posts: 230
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #452 on: 01.05.2010, 04:07:20 »
initscr() volaj v turnOn(), ked budes mat vsetko inicializovane, nacitane, osetrene.
endwin() volaj v turnOff(), ked sa chystas karla vypnut. a ten system("pause") napis este pred turnOff()

tak ako to hovoris tak to neide.. nwm preco.. dal som to tak ako mi hovoris.. na zaciatku mi vykresli cely svet (farebne) tak ako ma potom ked mal vykonat move tak ono to spravilo..ale nevykreslilo mi cely svet.. iba hornu cast kde je poloha karla a to... ked mal znova vykonat move tak uz nezobrazilo ani to..az nakoniec to "press..."

ursus

  • Hero Member
  • *****
  • Posts: 595
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #453 on: 01.05.2010, 05:12:40 »
pre Mirka

zaujimalo by ma, co vsetko ma byt okomentovane? resp co sa povazuje za neúplné komentáre (0-3b)

dakujem
So this router walks into the doctor’s office…
- Doctor, it hurts when IP.

sakalll3

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #454 on: 03.05.2010, 01:27:31 »
potreboval by som pls pomoct s ulohou c 10 s druhym a tretim bodom  http://stargate.cnl.tuke.sk/~mirek/pvjc/scenarios/10/index.html  nemam ani ponatia co dalej.......... kazda rada dobra diki moc

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #455 on: 03.05.2010, 03:01:15 »
initscr() volaj v turnOn(), ked budes mat vsetko inicializovane, nacitane, osetrene.
endwin() volaj v turnOff(), ked sa chystas karla vypnut. a ten system("pause") napis este pred turnOff()

tak ako to hovoris tak to neide.. nwm preco.. dal som to tak ako mi hovoris.. na zaciatku mi vykresli cely svet (farebne) tak ako ma potom ked mal vykonat move tak ono to spravilo..ale nevykreslilo mi cely svet.. iba hornu cast kde je poloha karla a to... ked mal znova vykonat move tak uz nezobrazilo ani to..az nakoniec to "press..."

a volas aj refresh()?
So say we all!

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #456 on: 03.05.2010, 03:02:13 »
pre Mirka

zaujimalo by ma, co vsetko ma byt okomentovane? resp co sa povazuje za neúplné komentáre (0-3b)

dakujem
je to uvedene v poziadavkach na vypracovanie zadania. chystam sa to prebrat aj na cvikach tento tyzden.
So say we all!

Palike

  • Full Member
  • ***
  • Posts: 230
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #457 on: 03.05.2010, 04:23:14 »

a volas aj refresh()?

ano pred sleep v draw a ked som mal este na zaciatku za tym to endwin tak to slo... len tam bol ten problem ako som spominal na zaciatku... ze ked robil tie funkcie co mal (bez turnOff to nemam zadeklarovane) tak to vykreslovalo normalne...ale ked ich dorobil a malo ist to system pause co je v maine na konci.. tak mi to hodilo prazdne pole len dole ze press...

totaluser

  • Hero Member
  • *****
  • Posts: 621
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #458 on: 03.05.2010, 16:58:45 »
chcem sa opytat ohladom poslednej ulohy v cviceni 10
Úloha:  Vytvorte knižničnú funkciu turnOff(), ktorá vypne robota Karla a zapíše výslednú podobu sveta do súboru.
Názov súboru, do ktorého zapíšete svet po zavolaní tejto funkcie, je output.kw. V prípade, že tento súbor neexistuje, vytvoríte ho. V prípade, že súbor existuje, prepíšete ho novým. Súbor musí mať rovnaký formát, ako ktorýkoľvek súbor, ktorý ste schopný načítať. To znamená, že tento súbor musíte vedieť následne otvoriť vo svojom programe.


len sa chcem spytat, ci tomu spravne rozumiem
tak ako nacitavam svet zo suboru a vo funkcii draw prechadzam svet 2 cyklami a podla X,Y umiestujem steny, beepre, karla, tak aj tu budem prechadzat cely svet 2 cyklami a jeho podobu zapisem do suboru?

alebo sa tym mysli nieco ine?
dakujem velmi pekne za odpoved

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #459 on: 03.05.2010, 17:29:20 »
len sa chcem spytat, ci tomu spravne rozumiem
tak ako nacitavam svet zo suboru a vo funkcii draw prechadzam svet 2 cyklami a podla X,Y umiestujem steny, beepre, karla, tak aj tu budem prechadzat cely svet 2 cyklami a jeho podobu zapisem do suboru?

alebo sa tym mysli nieco ine?
dakujem velmi pekne za odpoved

dobre tomu rozumies
So say we all!

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #460 on: 03.05.2010, 17:29:55 »

a volas aj refresh()?

ano pred sleep v draw a ked som mal este na zaciatku za tym to endwin tak to slo... len tam bol ten problem ako som spominal na zaciatku... ze ked robil tie funkcie co mal (bez turnOff to nemam zadeklarovane) tak to vykreslovalo normalne...ale ked ich dorobil a malo ist to system pause co je v maine na konci.. tak mi to hodilo prazdne pole len dole ze press...
ak mame spolu cviko, tak sa ozvi. nenapada ma teraz, kde by to mohlo ryzovat.
So say we all!

freshmakerik

  • Hero Member
  • *****
  • Posts: 570
  • v ?avej ruke mám kladivo keby nebolo vidno ;)
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #461 on: 03.05.2010, 21:39:02 »
for: Mirek

kde ma začať počítanie pozície ?? dole vľavo (ako na obrázku nižšie) alebo hore vľavo ??
teda kde sa nachádza pozícia 1:1, ..aby mi to správne načítalo karla, steny a beepre zo súboru..



//edit:
a tiež.., pozície stien, beeprov a karla v súbore o informáciach sveta (svet.kw) začínajú od 0:0, alebo 1:1 ??
.. e.g. w 0 0, alebo w 1 1 ??
« Last Edit: 04.05.2010, 03:12:50 by freshmakerik »
aj počítač je len človek..

ursus

  • Hero Member
  • *****
  • Posts: 595
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #462 on: 04.05.2010, 03:08:26 »
huh, ja som daval lavy horny roh ako 0,0
So this router walks into the doctor’s office…
- Doctor, it hurts when IP.

freshmakerik

  • Hero Member
  • *****
  • Posts: 570
  • v ?avej ruke mám kladivo keby nebolo vidno ;)
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #463 on: 04.05.2010, 03:09:32 »
huh, ja som daval lavy horny roh ako 0,0
no veď práve, ak by to tak bolo tak paráda :D
lebo aj ja to tak mám..
aj počítač je len človek..

Palike

  • Full Member
  • ***
  • Posts: 230
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #464 on: 04.05.2010, 04:08:31 »
ak mame spolu cviko, tak sa ozvi. nenapada ma teraz, kde by to mohlo ryzovat.

bohuzial nemame... ale aj tak dakujem za  ostatne rady  :thumbs-up:

Shwollo

  • Sr. Member
  • ****
  • Posts: 436
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #465 on: 05.05.2010, 02:17:31 »
cawte.... neviete niekto prečo mi nechce zo súboru načítať orientáciu? všetko ostatné načíta... len orientáciu nie. Dokonca mi ani karla nezobrazí....
Code: [Select]
#define MAX_HEIGHT 20
#define MAX_WIDTH 20
#define WALL -1
#define EMPTY 0
int width,height;
int world[MAX_HEIGHT][MAX_WIDTH];

typedef struct {
        int x,y,direction, beepers;
        }ROBOT;
ROBOT karel;

typedef enum {
        E, N, W, S
        }direction;
       
typedef enum {
        FALSE, TRUE
        }Boolean;

void turnOn(char *path){
     
     path = fopen ("world.txt", "r");
     fscanf (path, "%d %d %d %d %c %d", &width, &height, &karel.x, &karel.y, &karel.direction, &karel.beepers);
   
   int x,y;
for(x=0; x<height; x++){
for(y=0; y<width; y++)
world[width][height];
     
}
}

void draw()
{
 if (width > 20 || height > 20) { printf ("chyba, maximalne rozmery svera su 20x20, \npokracujte stlacenim klavesy enter");  getchar(); exit(1); }
 else {
  system("cls");
  printf("pozicia: x:%d y:%d \n",karel.x, karel.y); 
  printf("orientacia: ");
  if (karel.direction == S) printf("juh \n");
  if (karel.direction == N) printf("sever \n");
  if (karel.direction == W) printf("zapad \n");
  if (karel.direction == E) printf("vychod\n");
  printf("pocet beeprov v batohu: %d\n", karel.beepers);
  printf("tu je %d beeprov\n", world[karel.x][karel.y]);
  printf("ma beepre? %d\nje tu beeper? %d\n", beepersInBag(), beepersPresent());
  printf("orientacia %c  \n \nfrontIsblocked? %d \n",  karel.direction,  frontIsBlocked());
  printf("frontIsClear?   %d\nrightIsClear?   %d \nleftIsClear?    %d", frontIsClear() ,rightIsClear(), leftIsClear() );
  printf("\n\n");
     int x,y;

     for(x=0; x<height; x++){
     for(y=0; y<width; y++){
                     if(karel.y==y && karel.x==x)
                                            {
                                            if (karel.direction == S) printf("v");
                                            else if(karel.direction == E) printf(">");
                                            else if(karel.direction == N) printf("^");
                                            else if(karel.direction == W) printf("<");
                                            }
                     else
                     {
                      if (world[x][y] == WALL)   printf("#");
                      if (world[x][y] == EMPTY)  printf(".");
                      if (world[x][y] > 0)      printf("%d", world[x][y]);
                     }
   }
   printf("\n");
}

sleep(1000);
  }
}

v súbore mám len
Code: [Select]
9 9 0 0 W 200
nepíšte mi SS - radšej mi píšte mail. (tá obálka pod mojim avatarom :)))

Vikinger

  • Jr. Member
  • **
  • Posts: 58
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #466 on: 05.05.2010, 07:26:20 »
Chcel by som sa spytať ohľadom nižšie definovanej funkcií move
ked karel narazí na stenu vypise sa chybová hlaška, ale totizžo ked ma viac krat napisane move tak hlasku vypise viac krat, nevedeli by ste nejak prepisať tu funkciu tak ze: ked narazi na stenu tak hned to stopne a len raz vypise tu chybovu hlasku dakuejm ....

Code: [Select]
void move(void){ 
  int x,y;
  if(frontIsClear()==1)
  {
if(karel.direction==0) karel.y=karel.y+1;
    if(karel.direction==90) karel.x=karel.x-1;
    if(karel.direction==180) karel.y=karel.y-1;
    if(karel.direction==270) karel.x=karel.x+1;
    draw();
krok++;
}
else printf("\nChyba, je tu stena!\n\n");

}

Vikinger

  • Jr. Member
  • **
  • Posts: 58
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #467 on: 05.05.2010, 07:36:38 »
Chcel by som sa spytať ohľadom nižšie definovanej funkcií move
ked karel narazí na stenu vypise sa chybová hlaška, ale totizžo ked ma viac krat napisane move tak hlasku vypise viac krat, nevedeli by ste nejak prepisať tu funkciu tak ze: ked narazi na stenu tak hned to stopne a len raz vypise tu chybovu hlasku dakuejm ....

Code: [Select]
void move(void){ 
  int x,y;
  if(frontIsClear()==1)
  {
if(karel.direction==0) karel.y=karel.y+1;
    if(karel.direction==90) karel.x=karel.x-1;
    if(karel.direction==180) karel.y=karel.y-1;
    if(karel.direction==270) karel.x=karel.x+1;
    draw();
krok++;
}
else printf("\nChyba, je tu stena!\n\n");

}

už to netreba mam to :-)

Vikinger

  • Jr. Member
  • **
  • Posts: 58
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #468 on: 05.05.2010, 08:46:55 »
s prikazom putBeeper som vyhodil Beeper, ale mi to nevyhodilo tam kde je karel ale o jednu poziciu dalej a doprava dole, kde mozem mat definovanu zlu xovu a y-oovu os?

Safyia

  • Hero Member
  • *****
  • Posts: 1328
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #469 on: 05.05.2010, 14:39:12 »
s prikazom putBeeper som vyhodil Beeper, ale mi to nevyhodilo tam kde je karel ale o jednu poziciu dalej a doprava dole, kde mozem mat definovanu zlu xovu a y-oovu os?
pretoze suradnica sa zacina od [ 0 ] [ 0 ], takze 0,1,2,3 atd. Takze ked si si chcel dat beeper na 3, 3, realne pozicia je 4. riadok, 4.stlpec
nemoze to byt preto  ???  ;D

cyberguru

  • Newbie
  • *
  • Posts: 1
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #470 on: 05.05.2010, 15:58:33 »
Ahojte. Mohol by mi niekto pomoct s tymto kodom (potrebujem tam dopracovat funkciu putBeeper) a to nasledovne:
Karel sa nachádza v ľavom hornom rohu.
>.....
......
......
......
......
......

Situácia po postavení štvorca:
......
.****.
.****.
.****.
.****.
.....>

Koncová situácia:
Karel sa opäť nachádza v ľavom hornom rohu.
>.....
....*.
...*..
..*...
.*....
......

Samotný kód:

#define MAX_HEIGHT 20
#define MAX_WIDTH 20
#define EMPTY 0
#define WALL 1

void draw(void);
void movek(void);
void turnLeft(void);
void turnOn(void);
int frontIcClear(void);
int frontIsBlocked(void);

int width=6;
int height=6;

int karel_x=0, karel_y=0, karel_direction=180;

int world1[6][6] = {
    { 0,  0,  0,  0,  0,  0 },
    { 0,  0,  0,  0,  0,  0 },
    { 0,  0,  0,  0,  0,  0 },
    { 0,  0,  0,  0,  0,  0 },
    { 0,  0,  0,  0,  0,  0 },
    { 0,  0,  0,  0,  0,  0 },
};


int world[MAX_HEIGHT][MAX_WIDTH];

void turnOn(void){
  int i, j;
 
  for(i=0; i<height; i++)
  {
    for(j=0; j<width; j++)
    {
      world[j]=world1[j];   
    }
  } 
}

void draw(void){
  int i, j;
     
  for(i=0; i<height; i++)
  {
    for(j=0; j<width; j++)
    {
      if(karel_x==i && karel_y==j)
      {
        if(karel_direction==0) printf("\t <");
        if(karel_direction==90) printf("\t ^");
        if(karel_direction==180) printf("\t >");
        if(karel_direction==270) printf("\t v");
      }
      else
      {
            if(world[j]==EMPTY) printf("\t.");
            if(world[j]==WALL)  printf("\t#");     
      }
    }
    printf("\n\n\n");
  }
  sleep(1000);
  system("cls");
}

void movek(void)
{
  if(karel_direction==0)
  {
    if(frontIsClear())
    {
      karel_x=karel_x;
      karel_y=karel_y-1;
    }
    else printf("access denied\n");
  }
  else if(karel_direction==90)
  {
    if(frontIsClear())
    {
      karel_x=karel_x-1;
      karel_y=karel_y;
    }
    else printf("access denied\n");
  }
  else if(karel_direction==180)
  {
    if(frontIsClear())
    {
      karel_x=karel_x;
      karel_y=karel_y+1;
    }
    else printf("access denied\n");
  }
  else if(karel_direction==270)
  {
    if(frontIsClear())
    {
      karel_x=karel_x+1;
      karel_y=karel_y;
    }
    else printf("access denied\n");
  }
   
}

void turnLeft(void)
{
    if(karel_direction==0)
    {
      karel_direction=270;
    }
    else if(karel_direction==90)
    {
      karel_direction=0;
    }
    else if(karel_direction==180)
    {
      karel_direction=90;
    }
    else if(karel_direction==270)
    {
      karel_direction=180;
    }
    draw();
}

int frontIsClear(void){
             
   if(karel_direction==90)
   {
     if(karel_x==0)
     {
       return 0;
     }
     else
     {
       if(world[karel_x-1][karel_y]==WALL)
       {
         return 0;
       }
       else
       {
         return 1;
       }
     }
   }
   else if(karel_direction==0)
   {
     if(karel_y==0)
     {
       return 0;
     }
     else
     {
       if(world[karel_x][karel_y-1]==WALL)
       {
         return 0;
       }
       else
       {
         return 1;
       }
     }
   }
   else if(karel_direction==180)
   {
     if(karel_y==width)
     {
       return 0;
     }
     else
     {
       if(world[karel_x][karel_y+1]==WALL)
       {
         return 0;
       }
       else
       {
         return 1;
       }
     }
   }
   else if(karel_direction==270)
   {
     if(karel_x==height)
     {
       return 0;
     }
     else
     {
       if(world[karel_x+1][karel_y]==WALL)
       {
         return 0;
       }
       else
       {
         return 1;
       }
     }
   }   
}
int frontIsBlocked(void){
     if(frontIsClear()) return 0;
     else return 1;
}

profesionale

  • Newbie
  • *
  • Posts: 22
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #471 on: 05.05.2010, 17:10:39 »
Caute. Chcem sa spytat na senzori facingSouth() , facingWest() .... o co ide pri tychto senzoroch....lebo neviem ci som si to spravne z anglictiny prelozil. Ma to znamenat ci je na SEVER, JUH, ZAPAD, VYCHOD stena alebo ako???


Dakujem za odpoved.

Ing. nemtom

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7709
  • lofr dyslektik
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #472 on: 05.05.2010, 17:11:52 »
iba z nazvu funkcii usudzujem ze zistuje na aku svetovu stranu sa pozera karel ci sipka ci co to tam mate
brix will be shat

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #473 on: 05.05.2010, 17:18:10 »
Ahojte. Mohol by mi niekto pomoct s tymto kodom (potrebujem tam dopracovat funkciu putBeeper) a to nasledovne:
ak chces dopracovat funkciu putBeeper(), tak sa kukni naspat na scenar ku cviku c. 8. funkcia je pomerne jednoducha:
1. pripocitaj jeden beeper na aktualnu poziciu
2. odpocitaj beeper z batohu

a cele to zabal do podmienky, ze ak tam su beepre, tak makaj, inak sa vypni
So say we all!

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #474 on: 05.05.2010, 17:19:24 »
iba z nazvu funkcii usudzujem ze zistuje na aku svetovu stranu sa pozera karel ci sipka ci co to tam mate
presne tak. dokonca aj google hodi pomerne dobry preklad: "ak Karel stojí na východ"
So say we all!