Stránka 1 z 1

c++, podmienene prikazy

Napsal: pon 18. črc 2011, 16:12
od CaesarSK
caute, mam problem s podmienenymi prikazmi v c++ a ich postupnostou... upozornujem, ze som laik v tejto problematike, tak majte strpenie :)
konkretne tu je strom (mam ich 4 principialne rovnake vetvy)

Kód: Vybrat vše

if (podmienka_11)
 prikaz1
  if (podmienka_12)
     if (podmienka_13)
      prikaz2
     else if (podmienka_14)
      prikaz3
if (podmienka_21)
 prikaz1
  if (podmienka_22)
     if (podmienka_23)
      prikaz2
     else if (podmienka_24)
      prikaz3
if (podmienka_31)
 prikaz1
  if (podmienka_32)
     if (podmienka_33)
      prikaz2
     else if (podmienka_34)
      prikaz3
if (podmienka_41)
 prikaz1
  if (podmienka_42)
     if (podmienka_43)
      prikaz2
     else if (podmienka_44)
      prikaz3
info na uvod:
- prikaz "goto" nieje podporovany
- vysledok podmienok je TRUE/FALSE (pokial som dobre studoval, neda sa pouzit "switch"
- podmienky_x1 obsahuju n<1
- prikaz1 zvysuje cislo o 1
- prikaz2 znizuje cislo o 1

k opisu co potrebujem, aby robil...
- kontroluje zhodu s podmienkami_x1,
- ak najde zhodu, vojde do vetvy a vykona prikaz1 (cize n=n+1,typ padom uz nevyhovie podmienkam_x1)
- caka kedy budu postupne splnene dalsie podmienky (postup v ramci vetvy)
- vykona prikaz2 (n=n-1)
- vrati sa na zaciatok

s cim mam problem:
- po spusteni mi prejde cez podmienka_x1
- vykona sa prikaz1 (n=n+1)

v tomto bode mi zjavne vyskoci z vetvy, samozrejme kvoli n>1 sa uz nedostane k prikaz2 a tym padom jeho cinnost skoncila...
potrebujem, aby ked sa uz dostane program do vetvy, aby tam ostal az kym nebudu splnene ostatne podmienky a nevykona sa prikaz2, ktory ho vrati na zaciatok...
skusal som pouzitie while, if-else, return a continue a stale to nerobi to, co by som chcel... samozrejme neviem ci som ich pouzil spravne...

dufam, ze som to popisal zrozumitelne :)
dakujem za pomoc

Re: c++, podmienene prikazy

Napsal: pon 18. črc 2011, 16:54
od apoc9
Chtělo by to reálnější kus kódu. Je pravděpodobné, že existuje lepší řešení než změť if-else bloků.

Nejsem sice kovaný v c++, ale po if se definuje jeden výraz a nebo blok, který se provede pokud je podmínka splněná. Dobrá rada je nepoužívat if bez závorek je to hůře čitelné a náchylné k chybám.
To rozkreslené vnoření těch if příkazů se neprovede takto, ale přepsáno do bloků ...

Kód: Vybrat vše

if (podmienka_11) {
  prikaz1
}

if (podmienka_12) {
     if (podmienka_13) {
      prikaz2
     } else if (podmienka_14) {
      prikaz3
     }
}

if (podmienka_21) {
  prikaz1
}

if (podmienka_22) {
     if (podmienka_23) {
      prikaz2
     } else if (podmienka_24) {
      prikaz3
     }
}

if (podmienka_31) {
  prikaz1
}

if (podmienka_32) {
     if (podmienka_33) {
      prikaz2
     } else if (podmienka_34) {
      prikaz3
     }
}

if (podmienka_41) {
 prikaz1
}

if (podmienka_42) {
     if (podmienka_43) {
      prikaz2
     } else if (podmienka_44) {
      prikaz3
     }
}

Re: c++, podmienene prikazy

Napsal: pon 18. črc 2011, 18:14
od CaesarSK
samozrejme tam zatvorky a dalsie veci mam, to len pre zjednodusenie som to tam nedaval...
skusim to spravit takto, resp. to trocha zjednodusit...
dakujem za radu

Re: c++, podmienene prikazy

Napsal: pon 18. črc 2011, 19:25
od CaesarSK
hmm... takto to nepojde...
potrebujem dosiahnut, aby mi podmienku_11 -> prikaz1 ukoncila podmienka_13 alebo _14 -> prikaz2 atd. proste aby sa program ak vstupy cez pormienku_11 uz drzal len v tejto vetve a iba cez podmienky v tejto vetve mohol byt ukonceny :sad:

Re: c++, podmienene prikazy

Napsal: úte 19. črc 2011, 08:47
od Ssnake
co kdybys pridal komentare ke kazdemu radku, lustit ten kod podle popisku pod nim je dost na ***, nejlip s vysvetlenim co ktera podminka a prikaz dela (podle me je ton kod nesmyslny a proste vyskocit hned na zacatku musi), zapis jaks ho tu dal nepochopis za par dni ani ty :-)

Re: c++, podmienene prikazy

Napsal: úte 19. črc 2011, 10:06
od arxeiss
Jak píše Ssnake, dej sem nějaký kus kódu, který se má kompilovat, a to že tady pro zjednodušení dáš bez závorek... Tak to ani náhodou, vidíš že se to potom celé změní.

Re: c++, podmienene prikazy

Napsal: úte 19. črc 2011, 10:10
od CaesarSK
jedna sa o automatickeho obchodnika :) a uz som to vyriesil inak... jednoducho som to ocisloval a jedna vetva mi uz nezasahuje do druhej :)