Author Topic: Programovanie  (Read 187717 times)

hardest

  • Sr. Member
  • ****
  • Posts: 338
    • View Profile
Re: Programovanie
« Reply #100 on: 02.03.2011, 17:02:39 »
Danix ... daj sem aspon jedno riesenie :D



edit esperian // alebo ak niekto uz mal cviko a robil to tak to sem hodte dik
« Last Edit: 02.03.2011, 17:21:30 by esperian »

Danix

  • Newbie
  • *
  • Posts: 26
    • View Profile
Re: Programovanie
« Reply #101 on: 02.03.2011, 17:27:07 »
keby si aspoň poprosil :/
no nech sa páči http://www.sdilejkod.cz/kod/1912



// edit: to druhé riešenie s použitím presunu beeprov na vedľajšie miesto som už vymazal, lebo sa mi to zdalo príliš dlhé a neefektívne  ;D (ale funkčné)

// edit2:


void doubleBeeper() {
   if (beepersPresent()) {
      pickBeeper();
      doubleBeeper();
      putBeeper();
      putBeeper();
   }
}
neprišiel som sám na to, no funguje to, ale nechápem ako to môže fungovať. Ako vlastne vykonáva jednotlivé príkazy kompilátor? Napr. ak sa nachádza 1 beeper, tak ho zdvihne a znovu sa zavolá funkcia doubleBeeper() v ktorej sa overuje, ci tam je beeper, ale ked uz nie je, tak sa konštrukcia if vyhodnotí ako false, resp. 0 a sa nevykoná nič. ?!? kedy sa vykonajú putBeeper() ?
« Last Edit: 02.03.2011, 19:31:28 by Danix »

orsi

  • Full Member
  • ***
  • Posts: 182
    • View Profile
Re: Programovanie
« Reply #102 on: 03.03.2011, 02:41:48 »
co bolo na bleskovke ak ste už niekto mali cviko ???? ze co si mame pozret.

RiTChi

  • Full Member
  • ***
  • Posts: 218
    • View Profile
Re: Programovanie
« Reply #103 on: 03.03.2011, 02:45:39 »
co bolo na bleskovke ak ste už niekto mali cviko ???? ze co si mame pozret.

pozri si, co je to break a continue a druhu otazku som mal nakodit jednu jednoduchu f-ciu

Rado123

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Programovanie
« Reply #104 on: 03.03.2011, 03:39:24 »

void doubleBeeper() {
   if (beepersPresent()) {
      pickBeeper();
      doubleBeeper();
      putBeeper();
      putBeeper();
   }
}
neprišiel som sám na to, no funguje to, ale nechápem ako to môže fungovať. Ako vlastne vykonáva jednotlivé príkazy kompilátor? Napr. ak sa nachádza 1 beeper, tak ho zdvihne a znovu sa zavolá funkcia doubleBeeper() v ktorej sa overuje, ci tam je beeper, ale ked uz nie je, tak sa konštrukcia if vyhodnotí ako false, resp. 0 a sa nevykoná nič. ?!? kedy sa vykonajú putBeeper() ?

ja by som to napisal skor....

Code: [Select]
void doubleBeeper()
{
     pickBeeper();                      // hned dvihnes lebo tato funkcia sa vola iba ked karel stoji na znacke a teda mozes dvihnut znacku
     if( beepersPresent() )         // ak sa nachadza znacka volas opat doublebeeper
     {
           doubleBeeper();
     }
     putBeeper();
     putBeeper();
}

funguje to asi takto zavolas funkciu doubleBeeper(), dvihne znacku a skontroluje sa ci sa nachadza na pozicii karla dalsia znacka, ak ano opat sa zavola funkcia doubleBeeper().... takto to pojde dovtedy kym sa nedvihne posledna znacka, potom nebude platit podmienka a telo if sa nevykona teda prestane sa vnaranie a zacnes sa vynarat s tym ze polozis dve znacky.  funkcia tym padom konci a beh programu sa vracia tam kde sa prerusil v tomto pripade v tele if predchadzajucej funkcie doubleBeeper() ktora volala prave ukoncenu doubleBeeper(). prikaz if sa vykonal a tak sa vykonava dalej t.j. polozia sa znacky a konci sa funkcia, beh programu sa vracia tam kde bola funkcia zavolana t.j. opat do tela if predchadzajucej funkcie doubleBeeper() az kym sa nevratis do main() alebo akej funkcie z ktorej sa povodne prvykrat volala doubleBeeper()....ked si to zratas na kazdu dvihnutu znacku karel polozi dve znacky ;-)

orsi

  • Full Member
  • ***
  • Posts: 182
    • View Profile
Re: Programovanie
« Reply #105 on: 03.03.2011, 04:13:33 »
vidis rado, bol si až moc múdri  :D a mas pravdu ze sa to vykonava len ked stoji na beepri, ale googlu treba veriť v tomto prípade  :D

BuliWyf

  • Jr. Member
  • **
  • Posts: 53
    • View Profile
Re: Programovanie
« Reply #106 on: 03.03.2011, 12:04:13 »
B2:
na co sluzi break a continue
kolko krat mozno pouzit else v podmienke if
ktory log. cyklus zarucuje iteraciu
napisat formalnu syntax dvojcestneho vetvenia
rozdiel medzi while a do-while
vykona sa prikaz, ked ma vyraz hodnotu -1 ?

orsi

  • Full Member
  • ***
  • Posts: 182
    • View Profile
Re: Programovanie
« Reply #107 on: 03.03.2011, 15:49:49 »
nahodte sem niekto algoritmus na najdenie pokladu rekurzivne. dakujem

Rado123

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Programovanie
« Reply #108 on: 04.03.2011, 04:24:48 »
ten druhy kod nielen zdvojnasobi pocet znaciek, ale navyse tam este polozi dva.
ten kod vyssie je teda spravny -> vyskusaj a uvidis

Asi som moc tvrdohlavy ale neviem preco by moja varianta nemala fungovat korektne?
Na kazde dvihnutie pripadaju dve polozenia a neviem najst kde su tie dve polozenia navyse. Samozrejme ze tento kod bol vyskusany este kym so ho tu napisal a funguje ako ma.... ??? hmmmm

orsi

  • Full Member
  • ***
  • Posts: 182
    • View Profile
Re: Programovanie
« Reply #109 on: 04.03.2011, 05:35:13 »
hej funguje ti to. otestoval som to teraz.

hardest

  • Sr. Member
  • ****
  • Posts: 338
    • View Profile
Re: Programovanie
« Reply #110 on: 04.03.2011, 19:35:14 »
hodte sem prosim niekto ak mate zrobene z 3. cvicenia niektore ulohy od druhej ulohy dalej (prvu sme spravili na cviku), aj doplnujuce, diky

BuliWyf

  • Jr. Member
  • **
  • Posts: 53
    • View Profile
Re: Programovanie
« Reply #111 on: 05.03.2011, 17:52:28 »
3.2
Code: [Select]
#include <karel.h>

int main()
{
turnOn("treasuremap1.kw");
setStepDelay(250);
while (frontIsClear() || beepersPresent())
{
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
turnOff();
}
else
while (notFacingEast())
{
turnLeft();
}
while (noBeepersPresent())
{
movek();
}
}
else
while (notFacingSouth())
{
turnLeft();
}
while (noBeepersPresent())
{
movek();
}
}
else
while (notFacingWest())
{
turnLeft();
}
while (noBeepersPresent())
{
movek();
}
}
else
while (notFacingNorth())
{
turnLeft();
}
while (noBeepersPresent())
{
movek();
}
}
else
movek();
}
return 0;
}

3.3
Code: [Select]
#include <karel.h>

void turnRight()
{
setStepDelay(0);
turnLeft();
turnLeft();
setStepDelay(200);
turnLeft();
}

void turnBack()
{
turnLeft();
turnLeft();
}

void jedna()
{
putBeeper();
}

void dva()
{
putBeeper();
putBeeper();
}

void tri()
{
jedna();
dva();
}

void styri()
{
dva();
dva();
}

void pat()
{
styri();
jedna();
}

void sest()
{
pat();
jedna();
}

void sedem()
{
sest();
jedna();
}

void osem()
{
sedem();
jedna();
}

void devat()
{
osem();
jedna();
}

int main()
{
turnOn("stairsbuilder1.kw");
setStepDelay(200);
movek();
turnRight();
while (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
while (beepersPresent())
{
movek();
}
putBeeper();
turnBack();
while (frontIsClear())
{
movek();
}
turnBack();
continue;
}
else
putBeeper();
while (beepersPresent())
{
movek();
}
turnBack();
movek();
movek();
while (frontIsClear())
{
if (beepersPresent())
{
pickBeeper();
movek();
putBeeper();
turnBack();
movek();
turnBack();
}
else
movek();
}
putBeeper();
turnBack();
break;
}
while (beepersPresent())
{
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
pickBeeper();
if (beepersPresent())
{
devat();
movek();
devat();
}
else
devat();
movek();
osem();
}
else
osem();
movek();
sedem();
}
else
sedem();
movek();
sest();
}
else
sest();
movek();
pat();
}
else
pat();
movek();
styri();
}
else
styri();
movek();
tri();
}
else
tri();
movek();
dva();
}
else
dva();
movek();
}
movek();
break;
}
}
turnOff();
return 0;
}

psicho

  • VIP
  • Hero Member
  • *****
  • Posts: 3173
  • Markus[pSicho]Fesi
    • View Profile
    • codemazing
Re: Programovanie
« Reply #112 on: 05.03.2011, 18:56:31 »
Moje riesenie (pocita aj so zmenenou velkostou mapy :) ):

Code: [Select]
#include <karel.h>
int main() {
  turnOn("empty1.kw");
  for(int i=0; i<4; i++) {
    while(frontIsClear()) {
      movek();
    }
    if (i!=3) {
      turnLeft();
    }
    if(noBeepersPresent()) {
       putBeeper();
    }
  }
  turnOff();
  return 0;
}

THIS IS NOT A FUCKING C code
read my blog> www.codemazing.com <read my blog

psicho

  • VIP
  • Hero Member
  • *****
  • Posts: 3173
  • Markus[pSicho]Fesi
    • View Profile
    • codemazing
Re: Programovanie
« Reply #113 on: 05.03.2011, 19:01:28 »
zadania uz su nejake rozdane ? :D
read my blog> www.codemazing.com <read my blog

hardest

  • Sr. Member
  • ****
  • Posts: 338
    • View Profile
Re: Programovanie
« Reply #114 on: 05.03.2011, 19:13:27 »
este nie, preco ? ... chces si zarobit ? :D

darktemplar999

  • Jr. Member
  • **
  • Posts: 69
    • View Profile
Re: Programovanie
« Reply #115 on: 05.03.2011, 19:22:34 »
tu je este henten stred sveta v skratenej forme co som slubil

#include<karel.h>

void turnRight()
{
   setStepDelay(0);
   turnLeft();
   turnLeft();
   turnLeft();
   setStepDelay(100);
}

void go()
{
      turnLeft();
      while(frontIsClear())
      {
         movek();
      }
   
}

void roh()
{
   while(frontIsClear())
   {   
      movek();
   }   
   while(notFacingSouth()||frontIsClear()||rightIsClear())
   {
      go();
   }
   turnLeft();
   
}

void priamka()
{
   do
   {
      putBeeper();
      turnLeft();
      movek();
      turnRight();
      movek();
   }
   while(frontIsClear());
   putBeeper();
}

void najdiStred()
{
   turnLeft();
   go();
   turnLeft();
   while(noBeepersPresent())
   {
      movek();
      turnLeft();
      movek();
      turnRight();
   }
}

int main()
{
   turnOn("middleearth2.kw");
   setStepDelay(100);
   roh();
   priamka();
   najdiStred();
   turnOff();
   return 0;
}

darktemplar999

  • Jr. Member
  • **
  • Posts: 69
    • View Profile
Re: Programovanie
« Reply #116 on: 05.03.2011, 19:48:05 »
a este doplnkova 7 z druheho cvika, aj ked to zvladol asi kazdy

#include <karel.h>

void turnAround()
{
   turnLeft();
   turnLeft();
}

void go()
{
   while(frontIsClear())
   {
      movek();
   }      
}
int main()
{
   turnOn("walls2.kw");
   while(frontIsClear&&frontIsBlocked)
   {
      go();
      turnAround();
   }
}


hardest

  • Sr. Member
  • ****
  • Posts: 338
    • View Profile
Re: Programovanie
« Reply #117 on: 05.03.2011, 19:57:27 »
ked budete niekto robit doplnkove z tretieho cvika mozte aj to sem hodit, diky

Danix

  • Newbie
  • *
  • Posts: 26
    • View Profile
Re: Programovanie
« Reply #118 on: 05.03.2011, 20:12:37 »
....
   while(frontIsClear&&frontIsBlocked)
   {
      go();
      turnAround();
   }
}

To má byť čo za podmienka??!  :evica:

darktemplar999

  • Jr. Member
  • **
  • Posts: 69
    • View Profile
Re: Programovanie
« Reply #119 on: 05.03.2011, 20:21:24 »
tak chceli tam nekonecny cyklus, tak to robi donekonecna chodi z jednej strany na druhu :D ja tie ulohy nevymyslal :D

stacilo tam hocijaky drist napisat do tej podmienky, ktory by bol syntakticky blbo abo ja nevim, vela ma toho nenapada :D
« Last Edit: 05.03.2011, 20:33:16 by darktemplar999 »

AnvilOfFury

  • Full Member
  • ***
  • Posts: 220
    • View Profile
Re: Programovanie
« Reply #120 on: 05.03.2011, 20:54:14 »
tak chceli tam nekonecny cyklus, tak to robi donekonecna chodi z jednej strany na druhu :D ja tie ulohy nevymyslal :D

stacilo tam hocijaky drist napisat do tej podmienky, ktory by bol syntakticky blbo abo ja nevim, vela ma toho nenapada :D
Nekonecny cyklus: for( ; ; ){ ... }
Keep information to yourself - Knowledge is power. Think job security. Never provide documentation.
Use Real Tools - No "fancy-pancy" IDEs. Real developers only use vi.
Compiled = Ship It - User acceptance testing is an absolute waste of time.

darktemplar999

  • Jr. Member
  • **
  • Posts: 69
    • View Profile
Re: Programovanie
« Reply #121 on: 05.03.2011, 20:56:45 »
ta mne aj tak to fungovalo :D ale dik :D

darktemplar999

  • Jr. Member
  • **
  • Posts: 69
    • View Profile
Re: Programovanie
« Reply #122 on: 05.03.2011, 21:40:32 »
uloha1

#include <karel.h>

void zdvojnasob()
{
   if(beepersPresent())
   {
      pickBeeper();
      zdvojnasob();
      putBeeper();
      putBeeper();
   }
}

void turnRight()
{
   setStepDelay(0);
   turnLeft();
   turnLeft();
   turnLeft();
   setStepDelay(200);
}

void riadok()
{
   while(frontIsClear())
   {
      if(noBeepersPresent())
      {
         movek();
      }
      else
      {
         zdvojnasob();
         movek();
      }

   }
   if(beepersPresent())
   {
      zdvojnasob();
   }
   if(facingEast())
   {
      turnLeft();
      if(frontIsClear())
      {
         movek();
         turnLeft();
      }
   }
   else
   {
      turnRight();
      if(frontIsClear())
      {
         movek();
         turnRight();
      }
   }   
}

int main()
{
   turnOn("multiplier1.kw");
   setStepDelay(200);
   while(((frontIsClear())||(leftIsClear()))&&((frontIsClear())||(rightIsClear())))   
   {
      riadok();
   }
   turnOff();
   return 0;
}

jano32

  • Newbie
  • *
  • Posts: 1
    • View Profile
Re: Programovanie
« Reply #123 on: 05.03.2011, 23:36:43 »
 :ropebanana: :ropebanana:   za peniazky vam urobim zadania piste PM dohodneme sa  :)

darktemplar999

  • Jr. Member
  • **
  • Posts: 69
    • View Profile
Re: Programovanie
« Reply #124 on: 05.03.2011, 23:56:15 »
na zadania si spravte vlastnu temu, lebo tu to bude neprehladne pre tych co chcu len tie ulohy tu riesit.