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

dEVIANT

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #300 on: 17.04.2010, 05:43:55 »
Lebo inicializácia premennej (priradenie počiatočnej hodnoty) sa môže vyskytovať len spolu s jej definíciou (určenie typu, názvu, vyhradenie miesta v pamäti).

Tu by som ťa troška poopravil. Nie definícia, ale deklarácia. A definícia premennej je v tomto prípade to isté ako jej inicializácia.

A dig prvý krát vidím, že sa k členu štruktúry pristupuje cez bodku. U nás to bolo furt -> dynamicky cez smerník.

safiya ty sa neriadis podmienkou if(den==piatok.vecer) { zabava;oddych od skoly; }    ? :D :P ..
Toto u informatikov neplatí...:D

                                           
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

tommy-sv

  • Sr. Member
  • ****
  • Posts: 308
  • kapitalista
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #301 on: 17.04.2010, 18:45:57 »
A dig prvý krát vidím, že sa k členu štruktúry pristupuje cez bodku. U nás to bolo furt -> dynamicky cez smerník.                                 
i tak še da - i tak še da
-> je platny operator ak pracujes so smernikom na strukturu, to aby si smernik nemusel dereferencovat
. je platny ked pracujes so strukturou samotnou
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

sulo

  • Sr. Member
  • ****
  • Posts: 284
    • View Profile
    • Web
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #302 on: 18.04.2010, 20:12:26 »
http://stargate.cnl.tuke.sk/~mirek/pvjc/scenarios/09/index.html
"Úloha:  Vytvorte enumeračný typ Boolean, ktorý bude mať len dve hodnoty: TRUE (pravda, hodnota 1) a FALSE (nepravda, hodnota 0)."

Hodnoty TRUE a FALSE sa však už nachádzajú (ako makrá) vo windef.h, ktorý je vložený kvôli windows.h a funkcii sleep().

Takže buď sa nebude dať program na Windows skompilovať, alebo použijeme nejaké iné názvy (napr. YES a NO). Alebo windows.h vložíme až po našich definíciach typov, aj keď to nie je až také bežné.
« Last Edit: 18.04.2010, 20:17:11 by sulo »

petopetolkoo

  • Jr. Member
  • **
  • Posts: 68
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #303 on: 18.04.2010, 21:08:55 »
Code: [Select]
typedef enum BOOLEAN
{
 true=1,false=0       
}Boolean;

a takto sa to neda ?

tomaas09

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #304 on: 18.04.2010, 22:13:38 »
Má niekto už tú implementáciu karola od toho 6 cvika az do teraz?? potreboval by som... za neaku finančnú odmenu.. napr 10eur.. tomaas09@zoznam.sk

tommy-sv

  • Sr. Member
  • ****
  • Posts: 308
  • kapitalista
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #305 on: 18.04.2010, 23:58:58 »
http://stargate.cnl.tuke.sk/~mirek/pvjc/scenarios/09/index.html
"Úloha:  Vytvorte enumeračný typ Boolean, ktorý bude mať len dve hodnoty: TRUE (pravda, hodnota 1) a FALSE (nepravda, hodnota 0)."

Hodnoty TRUE a FALSE sa však už nachádzajú (ako makrá) vo windef.h, ktorý je vložený kvôli windows.h a funkcii sleep().

Takže buď sa nebude dať program na Windows skompilovať, alebo použijeme nejaké iné názvy (napr. YES a NO). Alebo windows.h vložíme až po našich definíciach typov, aj keď to nie je až také bežné.

mozes pouzit aj lowercase:
Code: [Select]
enum BOOLEAN
{
    false,
    true
};

...

BOOLEAN active = false;
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

sulo

  • Sr. Member
  • ****
  • Posts: 284
    • View Profile
    • Web
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #306 on: 19.04.2010, 02:06:59 »
Síce tým nedodržíme mennú konvenciu, ale inak celkom dobré riešenie.  :)

pooler

  • Jr. Member
  • **
  • Posts: 66
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #307 on: 19.04.2010, 15:35:28 »
mám spraveného celeho Karla už dosť dlho .. no robil som si ho po svojom - nie sú tam presne použite premenne ktore by mali byť podľa zadania - snad to nebude žiaden problem hm ?

staniel

  • Jr. Member
  • **
  • Posts: 56
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #308 on: 19.04.2010, 15:55:46 »
No ja mám implementaciu karola od 1 do 9 cvika..dostal som ale zadanie c. 6 a nechapem..pomoze mi niekto?? aj za finnacnu odmenu..diky

dEVIANT

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #309 on: 19.04.2010, 15:56:54 »
Hodte tu texty tých zadaní, nech vieme, čo to máte robiť  ;)
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

ursus

  • Hero Member
  • *****
  • Posts: 595
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #310 on: 19.04.2010, 21:48:27 »
uz su zadania?
So this router walks into the doctor’s office…
- Doctor, it hurts when IP.

Safyia

  • Hero Member
  • *****
  • Posts: 1328
    • View Profile

Shwollo

  • Sr. Member
  • ****
  • Posts: 436
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #312 on: 19.04.2010, 22:09:03 »
vedeli by ste mi niekto povedať, prečo mi nefunguje funkcia frontIsClear / Blocked?  :( Ja som už bezradný  bu

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];
int karel_x;
int karel_y;
int karel_direction;
int karel_beepers = 20;


void turnOn(){
     int i,j;

     karel_x = 4;
     karel_y = 3;
     width=6;
     height=5;

    
int newWorld[5][6]={
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1, -1, -1, 0 }
};

karel_direction = 90;


for(i=0;i<height;i++){
for(j=0;j<width;j++)
world[i][j]=newWorld[i][j];

}
}

void draw()
{
  system("cls");
  printf("pozicia: %d %d \n",karel_x, karel_y);  
  printf("orientacia: karel je gay: ");
  if (karel_direction == 0) printf("juh\n");
  if (karel_direction == 180) printf("sever\n");
  if (karel_direction == 270) printf("zapad\n");
  if (karel_direction == 90) printf("vychod\n");
  printf("pocet beeprov v batohu: %d\n", karel_beepers);
  printf("tu je %d beeprov", world[karel_y][karel_x]);
  printf(" \norientacia %d  \nclear?    %c\nblocked?  %c \n",  karel_direction, frontIsClear(), frontIsBlocked());

  printf("\n");
     int i,j;

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

}

void turnLeft()
{
      karel_direction += 90;
      karel_direction = karel_direction % 360;
      draw();
}
      
frontIsBlocked()
{    
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++ ;           //v            <-y->
       if(karel_direction==180) x--;          //^               x
       if(karel_direction==90) y++;           //>               |
       if(karel_direction==270) y--;          //<               v
 if (world[x][y] != EMPTY) return 'a';
    else return 'n';      
}

frontIsClear()
{    
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++;            // v
      else if(karel_direction==180) y++;      // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) x++;      // <
 if (world[x][y] != WALL) return 'a';
    else return 'n';
}
    
void movek()
{
     int x,y;
     if (frontIsClear() == 'a')    
      {    
      if(karel_direction==0) karel_x++;       //v            <-y->
      if(karel_direction==180) karel_y++;     //^              x
      if(karel_direction==90) karel_x++;      //>              |
      if(karel_direction==270) karel_x--;     //<              v
      draw();
      
      }
      else printf("\nchyba, je tu stena\n\n");
}

beepersInBag()
{
  if (karel_beepers >= 1) return 'a';
     else return 'n';
}

noBeepersInBag()
{
  return !beepersInBag();
}

beepersPresent()
{
  if (world[karel_y][karel_x] > 0) return 'a';
    else return 'n';
}

putBeeper()
{
 if (world[karel_y][karel_x] >= 0)
    {
      world [karel_y][karel_x] += 1;          
      karel_beepers--;
    }
    else printf("nie su tu beepre\n");  
    draw();
}

pickBeeper()
{
 if (world[karel_y][karel_x] >0)
    {
      world [karel_y][karel_x] -= 1;
      karel_beepers++;  
    }
    else printf("tu nie ju beper");        
    draw();
}


 


void testSensors()
{
        
  //  printf("suradnice: x:%d y:%d \norientacia %d  \nclear?    %c\nblocked?  %c \n", karel_x, karel_y, karel_direction, frontIsClear(), frontIsBlocked());
    printf("\nma beepre? %c\npocet beeprov v batohu: %d \nje tu beeper? %c\n", beepersInBag(), karel_beepers, beepersPresent());
    printf("tu je %d beeprov\n", world[karel_y][karel_x]);



}

nepíšte mi SS - radšej mi píšte mail. (tá obálka pod mojim avatarom :)))

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #313 on: 20.04.2010, 00:00:30 »
vedeli by ste mi niekto povedať, prečo mi nefunguje funkcia frontIsClear / Blocked?  :( Ja som už bezradný  bu

Code: [Select]
frontIsClear()
{   
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++;            // v
      else if(karel_direction==180) y++;      // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) x++;      // <
 if (world[x][y] != WALL) return 'a';
    else return 'n';
}

nie nahodou preto, ze aj ked by mal ist karel dolu, tak ides hore? a aj ked by mal ist dolava, ty ides doprava? stale ku premennym x a y iba pripocitavas?
So say we all!

petopetolkoo

  • Jr. Member
  • **
  • Posts: 68
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #314 on: 20.04.2010, 00:26:47 »
Code: [Select]
frontIsClear()
{   
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++;            // v
      else if(karel_direction==180) y++;      // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) x++;      // <
 if (world[x][y] != WALL) return 'a';
    else return 'n';
}
        ???????

shwollo..to si robis srandu ?

tommy-sv

  • Sr. Member
  • ****
  • Posts: 308
  • kapitalista
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #315 on: 20.04.2010, 00:48:44 »
vedeli by ste mi niekto povedať, prečo mi nefunguje funkcia frontIsClear / Blocked?  :( Ja som už bezradný  bu

Code: [Select]
void draw()
{
  system("cls");
  printf("pozicia: %d %d \n",karel_x, karel_y);  
  printf("orientacia: karel je gay: ");

jasne ze nefunguje ked karla vo funkcii draw() drazdis s tym ze je gay :ohmigod:
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

Safyia

  • Hero Member
  • *****
  • Posts: 1328
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #316 on: 20.04.2010, 00:49:12 »
Code: [Select]
frontIsClear()
{    
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++;            // v
      else if(karel_direction==180) y++;      // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) x++;      // <
 if (world[x][y] != WALL) return 'a';
    else return 'n';
}
 
;D pekne
Ale preco pri podmienke ked ide karol dolu a ked ide dolava vykonavas to iste? Neviem ci mas x os diagonalnu alebo horizontalnu, nechce s ami to pozerat, no jedno z toho zmen na y... a jeden y na x. A po druhe nemozes inkrementovat v oboch pripadoch, overujes predsa uplne ine pozicie. Medzi tie styri smery si rozhad x++,y++,x--a y-- tak aby ti to sedelo a vsetko pojde ako ma! :D

tommy ;D ;D ;D nevsimla som si :D
« Last Edit: 20.04.2010, 00:51:41 by Safyia »

Shwollo

  • Sr. Member
  • ****
  • Posts: 436
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #317 on: 20.04.2010, 01:58:41 »
hups... ja som to asi 2x menil tak som si to nevšimol.  :03: Ale keď to dám takto tak mi to aj tak nejde
btw y - je horizontálne

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];
int karel_x;
int karel_y;
int karel_direction;
int karel_beepers = 20;


void turnOn(){
     int i,j;

     karel_x = 4;
     karel_y = 3;
     width=6;
     height=5;

    
int newWorld[5][6]={
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1, -1, -1, 0 }
};

karel_direction = 90;


for(i=0;i<height;i++){
for(j=0;j<width;j++)
world[i][j]=newWorld[i][j];

}
}

void draw()
{
  system("cls");
  printf("pozicia: %d %d \n",karel_x, karel_y);  
  printf("orientacia: karel je gay: ");
  if (karel_direction == 0) printf("juh\n");
  if (karel_direction == 180) printf("sever\n");
  if (karel_direction == 270) printf("zapad\n");
  if (karel_direction == 90) printf("vychod\n");
  printf("pocet beeprov v batohu: %d\n", karel_beepers);
  printf("tu je %d beeprov", world[karel_y][karel_x]);
  printf(" \norientacia %d  \nclear?    %c\nblocked?  %c \n",  karel_direction, frontIsClear(), frontIsBlocked());

  printf("\n");
     int i,j;

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

}

void turnLeft()
{
      karel_direction += 90;
      karel_direction = karel_direction % 360;
      draw();
}
      
frontIsBlocked()
{    
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++ ;           //v            <-y->
       if(karel_direction==180) x--;          //^               x
       if(karel_direction==90) y++;           //>               |
       if(karel_direction==270) y--;          //<               v
 if (world[x][y] != EMPTY) return 'a';
    else return 'n';      
}

frontIsClear()
{    
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++;            // v
      else if(karel_direction==180) x--;      // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) y--;      // <
 if (world[x][y] != WALL) return 'a';
    else return 'n';
}
    
void movek()
{
     int x,y;
     if (frontIsClear() == 'a')    
      {    
      if(karel_direction==0) karel_x++;       //v            <-y->
      if(karel_direction==180) karel_x--;     //^              x
      if(karel_direction==90) karel_y++;      //>              |
      if(karel_direction==270) karel_y--;     //<              v
      draw();
      
      }
      else printf("\nchyba, je tu stena\n\n");
}

beepersInBag()
{
  if (karel_beepers >= 1) return 'a';
     else return 'n';
}

noBeepersInBag()
{
  return !beepersInBag();
}

beepersPresent()
{
  if (world[karel_y][karel_x] > 0) return 'a';
    else return 'n';
}

putBeeper()
{
 if (world[karel_y][karel_x] >= 0)
    {
      world [karel_y][karel_x] += 1;          
      karel_beepers--;
    }
    else printf("nie su tu beepre\n");  
    draw();
}

pickBeeper()
{
 if (world[karel_y][karel_x] >0)
    {
      world [karel_y][karel_x] -= 1;
      karel_beepers++;  
    }
    else printf("tu nie ju beper");        
    draw();
}


 


void testSensors()
{
        
  //  printf("suradnice: x:%d y:%d \norientacia %d  \nclear?    %c\nblocked?  %c \n", karel_x, karel_y, karel_direction, frontIsClear(), frontIsBlocked());
    printf("\nma beepre? %c\npocet beeprov v batohu: %d \nje tu beeper? %c\n", beepersInBag(), karel_beepers, beepersPresent());
    printf("tu je %d beeprov\n", world[karel_y][karel_x]);



}

nepíšte mi SS - radšej mi píšte mail. (tá obálka pod mojim avatarom :)))

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #318 on: 20.04.2010, 02:02:24 »
skus sa este pozriet na to, ako pracujes s y-ovou a x-ovou osou v poli - ako ich pouzivas pri nacitavani pola v turnOn() a ako ich pouzivas v senzore frontIsClear()
So say we all!

petopetolkoo

  • Jr. Member
  • **
  • Posts: 68
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #319 on: 20.04.2010, 02:06:53 »
shwollo ten senzor urob radsej cez switch a nezabudaj kontrolovat aj hranice sveta, to jest height a width, kusok sa nad tym zamysli, nakresli si aj to pole ak ty to pomoze a skusaj hlavne skusaj

tommy-sv

  • Sr. Member
  • ****
  • Posts: 308
  • kapitalista
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #320 on: 20.04.2010, 02:14:47 »
hups... ja som to asi 2x menil tak som si to nevšimol.  :03: Ale keď to dám takto tak mi to aj tak nejde
btw y - je horizontálne
Code: [Select]
frontIsClear()
{    
...
 if (world[x][y] != WALL) return 'a';
    else return 'n';
}

wtf: return 'a' return 'n' ???
teda pokial netestujes: if (frontIsClear() == 'y') lebo if (frontIsClear()) sa stale vyhodnoti ako true
a bolo by fajn definovat typ navratovej hodnoty... int
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

Shwollo

  • Sr. Member
  • ****
  • Posts: 436
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #321 on: 20.04.2010, 02:37:56 »
shwollo ten senzor urob radsej cez switch a nezabudaj kontrolovat aj hranice sveta, to jest height a width, kusok sa nad tym zamysli, nakresli si aj to pole ak ty to pomoze a skusaj hlavne skusaj
nemáš to jedno, či tam dám swich alebo if?

wtf: return 'a' return 'n' ???

dal som tam "1" a "0" a robí to presne to isté

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];
int karel_x;
int karel_y;
int karel_direction;
int karel_beepers = 20;


void turnOn(){
     int i,j;

     karel_x = 4;
     karel_y = 3;
     width=6;
     height=5;

    
int newWorld[5][6]={
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1, -1, -1, 0 }
};

karel_direction = 90;


for(i=0;i<height;i++){
for(j=0;j<width;j++)
world[i][j]=newWorld[i][j];

}
}

void draw()
{
  system("cls");
  printf("pozicia: %d %d \n",karel_x, karel_y);  
  printf("orientacia: karel je gay: ");
  if (karel_direction == 0) printf("juh\n");
  if (karel_direction == 180) printf("sever\n");
  if (karel_direction == 270) printf("zapad\n");
  if (karel_direction == 90) printf("vychod\n");
  printf("pocet beeprov v batohu: %d\n", karel_beepers);
  printf("tu je %d beeprov", world[karel_y][karel_x]);
  printf(" \norientacia %d  \nclear?    %d\nblocked?  %d \n",  karel_direction, frontIsClear(), frontIsBlocked());

  printf("\n");
     int i,j;

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

}

void turnLeft()
{
      karel_direction += 90;
      karel_direction = karel_direction % 360;
      draw();
}
      
frontIsBlocked()
{    
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++ ;           //v            <-y->
       if(karel_direction==180) x--;          //^               x
       if(karel_direction==90) y++;           //>               |
       if(karel_direction==270) y--;          //<               v
 if (world[x][y] != EMPTY) return 1;
    else return 0;      
}

frontIsClear()
{    
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++;            // v
      else if(karel_direction==180) x--;      // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) y--;      // <
 if (world[x][y] != WALL) return 1;
    else return 0;
}
    
void movek()
{
     int x,y;
     if (frontIsClear() == 'a')    
      {    
      if(karel_direction==0) karel_x++;       //v            <-y->
      if(karel_direction==180) karel_x--;     //^              x
      if(karel_direction==90) karel_y++;      //>              |
      if(karel_direction==270) karel_y--;     //<              v
      draw();
      
      }
      else printf("\nchyba, je tu stena\n\n");
}

beepersInBag()
{
  if (karel_beepers >= 1) return 1;
     else return 0;
}

noBeepersInBag()
{
  return !beepersInBag();
}

beepersPresent()
{
  if (world[karel_y][karel_x] > 0) return 1;
    else return 0;
}

putBeeper()
{
 if (world[karel_y][karel_x] >= 0)
    {
      world [karel_y][karel_x] += 1;          
      karel_beepers--;
    }
    else printf("nie su tu beepre\n");  
    draw();
}

pickBeeper()
{
 if (world[karel_y][karel_x] >0)
    {
      world [karel_y][karel_x] -= 1;
      karel_beepers++;  
    }
    else printf("tu nie ju beper");        
    draw();
}


 


void testSensors()
{
        
  //  printf("suradnice: x:%d y:%d \norientacia %d  \nclear?    %c\nblocked?  %c \n", karel_x, karel_y, karel_direction, frontIsClear(), frontIsBlocked());
    printf("\nma beepre? %c\npocet beeprov v batohu: %d \nje tu beeper? %c\n", beepersInBag(), karel_beepers, beepersPresent());
    printf("tu je %d beeprov\n", world[karel_y][karel_x]);



}

« Last Edit: 20.04.2010, 02:44:45 by Shwollo »
nepíšte mi SS - radšej mi píšte mail. (tá obálka pod mojim avatarom :)))

sulo

  • Sr. Member
  • ****
  • Posts: 284
    • View Profile
    • Web
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #322 on: 20.04.2010, 03:05:28 »
1.
Code: [Select]
if (world[x][y] != WALL) return 1;
skus sa este pozriet na to, ako pracujes s y-ovou a x-ovou osou v poli - ako ich pouzivas pri nacitavani pola v turnOn() a ako ich pouzivas v senzore frontIsClear()

2. Senzor frontIsBlocked by mal vracať opačnú hodnotu ako frontIsClear. Netreba písať podobný kód viackrát - čím viac kódu, tým väčšia náchylnosť na chyby. Môžeš to riešiť podobne ako s beepersInBag a noBeepersInBag.

tommy-sv

  • Sr. Member
  • ****
  • Posts: 308
  • kapitalista
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #323 on: 20.04.2010, 03:22:01 »
dalsia vec:
Code: [Select]
if (world[x][y] != EMPTY) return 1;co ak je na pozicii beeper, t.j. kladna hodnota world [ x ] [ y ] ? stena to nie je, a predsa vrati frontIsBlocked() hodnotu 1, ako keby tam bola stena.
« Last Edit: 20.04.2010, 03:24:53 by tommy-sv »
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

Shwollo

  • Sr. Member
  • ****
  • Posts: 436
    • View Profile
Re: ZADANIA Z predmetu PROGRAMOVANIE
« Reply #324 on: 20.04.2010, 04:26:22 »
dorobil som frontIsClear
môže byť?

Code: [Select]
frontIsClear()
{   
 int x = karel_x;
 int y = karel_y;
       if(karel_direction==0) x++;            // v
      else if(karel_direction==180) x--;      // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) y--;      // <
 if (world[x][y] == EMPTY || x <= height || y <= width || x > 0 || y > 0 ) return 1;
    else return 0;
}
   
frontIsBlocked()
{   
 return !frontIsClear();

skus sa este pozriet na to, ako pracujes s y-ovou a x-ovou osou v poli - ako ich pouzivas pri nacitavani pola v turnOn() a ako ich pouzivas v senzore frontIsClear()
neviem, čo tam mám zle ???
nepíšte mi SS - radšej mi píšte mail. (tá obálka pod mojim avatarom :)))