Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

while definicija i konkretno pitanje???

[es] :: C++ programiranje :: C++ za početnike :: while definicija i konkretno pitanje???

[ Pregleda: 369 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

osmania
Wien

Član broj: 26316
Poruke: 264
*.20.11.vie.surfer.at.



Profil

icon while definicija i konkretno pitanje???08.11.2007. u 19:44

experimentisao sam i pitam se zasto ovde izbacuje broj 8. Po mojoj logici bi trebalo izbaciti broj 6 jer u while petlji imamo ako je i<7 ili i==y nakon treceg obrta petlje bice ispunjen uslov i==y. a kao stoo kaze algerba 0 ili 1 jeste 1 to znaci true i trebalo bi da prekine ili???? hvala puno
ne znam zasto se ovo desava:

Code:
#include<iostream>
using namespace std;
int main() {
  int i = 2, y = 6;
  do
    i = i + 2;
  while ((i<7)||(i==y));
  cout << i;
  return 0;
}


08.11.2007. u 19:44 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2668
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: while definicija i konkretno pitanje???08.11.2007. u 21:10
Petlja while će raditi dok god je BILO KOJI od dva uslova ispunjen. To je smisao logičkog ILI.

Dakle, petlja radi:
- i kad su oba uslova ispunjena
- i kad je jedan uslov ispunjen (bilo prvi bilo drugi, svejedno)

U tvom slučaju, kada "i" dosegne vrednost 6 (nakon trećeg prolaza), oba uslova su i dalje tačana, i petlja radi. Da bi petlja mogla da se PREKINE, prethodno je "i" moralo da dobije i sledeću vrednost, a to je 8. Otuda taj rezultat.

na primer:
Code:

int i;
for ( i=0; i<=9; i++ )
   ;
cout << i;


ovde je "i" jednako 10 (a ne 9) nakon izlaska iz petlje, jer da bi petlja mogla biti prekinuta, prethodno je "i" dobilo vrenost koja je potreban uslova za izlazak iz petlje.

Unutar petlje vrednosti su očekivane.

A zašto to tako radi, biće ti jasno kad budete prešli na programiranje na asembleru i kad isti taj kod za petlju budete morali da uradite u njemu ;)


FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
08.11.2007. u 21:10 

osmania
Wien

Član broj: 26316
Poruke: 264
*.20.11.vie.surfer.at.



Profil

icon Re: while definicija i konkretno pitanje???08.11.2007. u 21:29
Citat:
X Files: Petlja while će raditi dok god je BILO KOJI od dva uslova ispunjen. To je smisao logičkog ILI.

Dakle, petlja radi:
- i kad su oba uslova ispunjena
- i kad je jedan uslov ispunjen (bilo prvi bilo drugi, svejedno)

U tvom slučaju, kada "i" dosegne vrednost 6 (nakon trećeg prolaza), oba uslova su i dalje tačana, i petlja radi. Da bi petlja mogla da se PREKINE, prethodno je "i" moralo da dobije i sledeću vrednost, a to je 8. Otuda taj rezultat.


kontam ja sve sto ti kazes ali zar niej vec u trecem prolazu (jos nije zavrsen) vec imamo i = 6 i poredi ga sa y i vec je 6 i gotovo ispisi 6...
u ovom slucaju on je zanemario ovaj drugi uslov. za prvi mi je sve jasno i<7 ok ali i == y to je vec 6....
hm kriticno, ne vidim nikakvog razloga da ode jos jednom....
08.11.2007. u 21:29 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2668
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: while definicija i konkretno pitanje???08.11.2007. u 21:57
Citat:

[...] ali zar niej vec u trecem prolazu (jos nije zavrsen) vec imamo i = 6 i poredi ga sa y i vec je 6 i gotovo ispisi 6...
u ovom slucaju on je zanemario ovaj drugi uslov. za prvi mi je sve jasno i<7 ok ali i == y to je vec 6....
hm kriticno, ne vidim nikakvog razloga da ode jos jednom....

Pogrešno. Kada "i" dosegne vrednost 6, uslov je i dalje TAČAN (TRUE) i petlja se NE završava mometalno, već se ide u sledeću iteraciju.

Ti polaziš od pretpostavke da je tendencija da "i" uvek može samo da raste i da nema šanse da se umanji kad dosegne vrednost 6. Vidiš, kompajler nema te predrasude i sasvim je moguće dodati kod u petlju:
Code:

if ( i==8 )
   i=0;

... i tvoja pretpostavka više nije tačna.


Code:

#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
   int i = 2, y = 6;
   int prolaz = 0;
   do
   {
      i = i + 2;
      cout << "Prolaz: " << ++prolaz << ", i=" << i << "\n";
   } while ((i<7)||(i==y));
   cout << i;

   system("PAUSE");
   return EXIT_SUCCESS;
}


FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
08.11.2007. u 21:57 

osmania
Wien

Član broj: 26316
Poruke: 264
*.20.11.vie.surfer.at.



Profil

icon Re: while definicija i konkretno pitanje???08.11.2007. u 22:17
ok drug sada mi je jasno sta i kako to ide :) jupiii
08.11.2007. u 22:17 

[es] :: C++ programiranje :: C++ za početnike :: while definicija i konkretno pitanje???

[ Pregleda: 369 | Odgovora: 4 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.