c++, podmienene prikazy

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
CaesarSK
Nováček
Nováček
Registrován: 14. čer 2009

c++, podmienene prikazy

Příspěvek 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
CPU: Intel Core 2 Quad Q9400, 2666 MHz; MB: Gigabyte EP45-UD3R; RAM: 8 GB (DDR2-800); GPU: Sapphire ATI HD4870 1GB TOXIC; Sound: Creative X-Fi Gamer, Zdroj: Gigabyte Odin 800W
apoc9
Nováček
Nováček
Registrován: 09. črc 2009

Re: c++, podmienene prikazy

Příspěvek 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
     }
}
If an integer is parsed in the woods, and no one is around to hear it fail, does it raise an exception?
馬鹿と猫は風邪を引かない。
blog: http://apoc9.blogspot.com/
PC: Intel i7-2600k, MB Gigabyte P67A-UD4-B3, Gigabyte GTX580 (WINDFORCE 3X), CORSAIR DDR3 8GB 1600MHz CL9 Vengeance XMP, Win 7 ultimate 64
MP: Cowon J3 (32GB) + Denon AH-C710
Ebook: Sibrary G10 (9,7")
CaesarSK
Nováček
Nováček
Registrován: 14. čer 2009

Re: c++, podmienene prikazy

Příspěvek 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
CPU: Intel Core 2 Quad Q9400, 2666 MHz; MB: Gigabyte EP45-UD3R; RAM: 8 GB (DDR2-800); GPU: Sapphire ATI HD4870 1GB TOXIC; Sound: Creative X-Fi Gamer, Zdroj: Gigabyte Odin 800W
CaesarSK
Nováček
Nováček
Registrován: 14. čer 2009

Re: c++, podmienene prikazy

Příspěvek 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:
CPU: Intel Core 2 Quad Q9400, 2666 MHz; MB: Gigabyte EP45-UD3R; RAM: 8 GB (DDR2-800); GPU: Sapphire ATI HD4870 1GB TOXIC; Sound: Creative X-Fi Gamer, Zdroj: Gigabyte Odin 800W
Ssnake
Začátečník
Začátečník
Registrován: 25. led 2005
Bydliště: chotebuz

Re: c++, podmienene prikazy

Příspěvek 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 :-)
FD node 202, ST45SF, Z97i, i7-4980HQ CB20:1718,CB24:254 NH-L9i, 2x8, R9NANO , 5100MAX
x850xtPE, x1950xtx, hd2900gt, hd3870, hd4890, hd5870 - - 6800ultra, 7900gtx, 8800gtx, 9800gtx+, gtx285
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: c++, podmienene prikazy

Příspěvek 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í.
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
CaesarSK
Nováček
Nováček
Registrován: 14. čer 2009

Re: c++, podmienene prikazy

Příspěvek 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 :)
CPU: Intel Core 2 Quad Q9400, 2666 MHz; MB: Gigabyte EP45-UD3R; RAM: 8 GB (DDR2-800); GPU: Sapphire ATI HD4870 1GB TOXIC; Sound: Creative X-Fi Gamer, Zdroj: Gigabyte Odin 800W
Odpovědět

Zpět na „Programování a web“