naprogramovanie - karel

Programovacie jazyky, rady, poradňa...
tyta555
Novice
Novice
Príspevky: 3
Registrovaný: 04 máj 2010, 11:53

naprogramovanie - karel

Príspevok od používateľa tyta555 »

mám spravený svet pre karla v jazyku C, a uz len potrebujem vykreslit pismeno A, nevedel by mi niekto poradit aspon podstatu, alebo ako by som mala zacat??
test
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 5099
Registrovaný: 13 mar 2005, 5:20
Bydlisko: Doma

Re: naprogramovanie - karel

Príspevok od používateľa test »

Tymto by si mal zacat: http://www.hojko.com/citajte-pred-zaloz ... 23064.html

Ked nedokazes pochopit pointu Karla, tak sa do programovania ani len nepustaj.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: naprogramovanie - karel

Príspevok od používateľa harrison314 »

V poslednom case je tu kazdy treti prispevok typu : " Spravte mi zadanie"
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: naprogramovanie - karel

Príspevok od používateľa audiotrack »

harrison314 napísal:V poslednom case je tu kazdy treti prispevok typu : " Spravte mi zadanie"
to sa opakuje každý rok ku koncu školy
tyta555
Novice
Novice
Príspevky: 3
Registrovaný: 04 máj 2010, 11:53

Re: naprogramovanie - karel

Príspevok od používateľa tyta555 »

dobre, tieto vaše príspevky tu nepotrebujem, ja som vas ziadala o pomoc lebo to neviem, ale toto pomoc nie je
a take ze spravte mi zadanie to som vobec nechcela, len na neviem pohnut dalej
heker
Redeemer
Redeemer
Používateľov profilový obrázok
Príspevky: 14818
Registrovaný: 30 máj 2006, 20:27

Re: naprogramovanie - karel

Príspevok od používateľa heker »

A kde si sa zasekla?
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: naprogramovanie - karel

Príspevok od používateľa reDo »

nikdy som v karlovi neprogramoval ale co tak skusit urobit txt subor v ktorom mas nakreslene z pismen pismeno A a potom len nacitas a vypises ten subor?
hojko
Site Admin
Site Admin
Používateľov profilový obrázok
Príspevky: 38515
Registrovaný: 24 apr 2004, 18:29
Bydlisko: Európa
Kontaktovať používateľa:

Re: naprogramovanie - karel

Príspevok od používateľa hojko »

reDo: A prave v tom je problem, ze Karel nie je programovaci jazyk a to co si napisal je uplna kravina. Nedokaze pracovat so ziadnymi subormi ani nic, mozno tak maximalne ulozit a nacitat si svoj projekt. Ale program ako taky je viacmenej ako detska hra na pochopenie algoritmov a logiky.
piton
King
King
Používateľov profilový obrázok
Príspevky: 1902
Registrovaný: 02 aug 2005, 0:31
Bydlisko: Hnojisko

Re: naprogramovanie - karel

Príspevok od používateľa piton »

hojko, nemas pravdu, ten karel o ktorom hovori ona je implementovany ako Cckovska kniznica, cize sa v nom pise normalne v C.
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: naprogramovanie - karel

Príspevok od používateľa reDo »

ano to som myslel vravi ze to ma spravene v C a ja som jej len navrhol ako to vypisat v C
Shwollo
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2543
Registrovaný: 04 dec 2006, 14:35
Bydlisko: LM / Brno

Re: naprogramovanie - karel

Príspevok od používateľa Shwollo »

potreboval by som aj ja trochu pomôcť... Ak sa s tým niekomu chce babrať
niečo som zbúchal, ale nechápem prečo mi cyklus

Kód: Vybrať všetko

 while (beepersPresent()){
                pickBeeper();
                beep++;
            if (beep == 4) domov();}
prebehne iba raz.
Je v 8. riadku

dik

Kód: Vybrať všetko

int main(){
    int beep = 0;
    turnOn("world.txt");
    draw();
    while (frontIsClear()){                                                     // cyklus, aby sie K stale dopredu
          movek();
          beep:
          while (beepersPresent()){
                pickBeeper();
                beep++;
                if (beep == 4) domov();}
				
          if (frontIsBlocked() && facingSouth()){                               //ak narazi na stenu a je otoceny dole
             turnLeft();
             if (frontIsBlocked() && rightIsBlocked()){                         //ak dojde do rohu sveta
                turnLeft();
                turnLeft();
                while (frontIsClear())
                       movek();
                          while (frontIsClear()){
                                movek();
                                while (frontIsBlocked())
                                      if (beepersInBag()){
                                      putBeeper();
                                      int beep = 0;}
                                      else goto koniec; 
                                }
                             
                         }
                else movek();
             if (rightIsClear())
                okoloDole();                                                    // obide stenu vo vnutri sveta
                else turnLeft();
          }
       	                          
          if (frontIsBlocked() && facingNorth()){                               //ak narazi na stenu a je otoceny hore
             turnRight();
             if (frontIsBlocked() && leftIsBlocked()){                          //ak dojde to rohu sveta
                turnLeft();
                turnLeft();
                while (frontIsClear())
                      movek();
                      while (frontIsBlocked())
                            if (beepersInBag()){
                               putBeeper();
                               int beep = 0;}
                               else goto koniec;
                      }
                else movek();
             if (leftIsClear())
                okoloHore();                                                    //obide stenu
                else turnRight();
             }
          


}
koniec:
  system("PAUSE");	
  return 0;
}
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: naprogramovanie - karel

Príspevok od používateľa audiotrack »

čo presne robí metoda pickBeeper()?
Shwollo
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2543
Registrovaný: 04 dec 2006, 14:35
Bydlisko: LM / Brno

Re: naprogramovanie - karel

Príspevok od používateľa Shwollo »

Kód: Vybrať všetko

pickBeeper() 
  { 
    if (svet.world[karel.x][karel.y] > 0)                                      
      { 
        svet.world [karel.x][karel.y] -= 1;                                      
        karel.beepers++;                                                        
        draw(); 
      } 
      else  printf("chyba, na tomto mieste nie je beeper\n\n");                  
  }
karel.x a karel.y sú súradnice miesta, kde sa karel nachádza. svet.world je dvojrozmerné pole - to je ten jeho svet. Ide o to, že vo svete čísla -1 zobrazuje ako steny, 0 zobrazuje ako miesto, kade môže prejsť a ak je tam číslo väčšie ako 0 tak tam sú "beepre" - to sú nejaké značky, ktoré môže zobrať.
karel.beepers je počet tých beeprov, ktoré má momentálne "pri sebe".
draw() je funkcia na vykreslenie sveta.
Môžem sem hodiť celú moju implementáciu, ale pochybujem, že sa do toho niekto pozrie.

moje zadanie:

Kód: Vybrať všetko

Karel sa rozhodol tráviť Veľkú noc v Amerike. Domáci ho zatiahli do zvyku hľadania vajec na záhrade. Karel teda zoberie košík a hľadá vajcia. Do košíka sa zmestia maximálne 4 vajcia, takže keď ich Karel toľko nájde, vráti sa do domčeka, vyloží ich a vracia sa naspäť hľadať vajíčka. Karel chce nájsť všetky vajcia, preto hľadá, kým nenájde všetky. 
Počiatočná situácia:
Karel začína v domčeku. Záhrada môže byť ľubovoľne veľká a na niektorých miestach sa môžu nachádzať kvetináče (voľne pohodené steny). Záhrada môže byť ľubovoľne veľká. 

v#.1...
....11.
.2..3..
Koncová situácia:
Po zozbieraní všetkých vajec sa Karel postaví pred domček. 

8#.....
v......
.......
:lol: :lol: :lol: :lol:
tou funkciou som chcel spraviť, aby sa po zobratí 4 beeprov vrátil na začiaok. Lenže mi to spraví iba raz.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: naprogramovanie - karel

Príspevok od používateľa audiotrack »

a čo robí beepersPresent()? Ono na začiatku máš beep ako nula, čiže ak to prejde, znamená že táto funkcia ti vráti true v prípade že je to nula (a ty chceš opak). Keď tam zvýšiš beep tak to už neprejde. To je jediné logické vysvetlenie, lebo iné chyby tam nevidím. Skús si tú funkciu pozreť či tam nemáš niečo zle (ak je to tvoja funkcia, lebo nepoznám toho karla čo všetko tam je a čo si robil ty)
Shwollo
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2543
Registrovaný: 04 dec 2006, 14:35
Bydlisko: LM / Brno

Re: naprogramovanie - karel

Príspevok od používateľa Shwollo »

táto funkcia kontroluje či je na súradnici, kde sa práve karel nachádza, beeper.

Kód: Vybrať všetko

beepersPresent()
  {
    if (svet.world[karel.x][karel.y] > 0) return 1;                            
    else return 0;
  }
  
noBeepersPresent()
  {
    return !beepersPresent();
  }
v tejto funkcii by nemalo byť nič zle. Kontroloval som to.

čo si chel povedať tým, že sa tá funkcia vráti ako true? Vôbec som ťa nepochopil :?

ten Karel fungue podľa tohto

//edit: tak už mi to ide :D
Napísať odpoveď