Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » break und continue in verschachtelten Schleifen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
22.12.2004, 17:22 Uhr
Oliver
S2-Pixelgeneral


Hmm, ich brauch eigentlich nur immer 6 Zahlen zu ziehen. Ich wollte so einen Lottosimulator für meinen Vater programmieren, damit er sieht, wieviel Geld er verschleudert . Naja, werde ich sowieso nicht mehr bis übermorgen schaffen. Da will ich dann x Spiele mit y Tipps hintereinander simulieren, bei denen immer 6 Zahlen gezogen werden. Wäre dann z.B. bei 100000 Spielen meine Methode schneller?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
22.12.2004, 17:24 Uhr
RedEagle



warum verwendet man nicht einfach ne Variable??:

C++:
bool run=true;

while(run)
{
for(int i=0; i<100; i++)
{
   for(int j=0; i<100; j++)
   {
     if(i==10) run=false;
   }
}
}


--
MFG RedEagle

Dieser Post wurde am 22.12.2004 um 17:24 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
22.12.2004, 17:36 Uhr
Oliver
S2-Pixelgeneral


Weil die Schleife dann trotzdem weiterläuft und nicht sofort abgebrochen wird.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
22.12.2004, 21:33 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


man könnte es so machen:


C++:
bool run=true;

while(run)
{
  for(int i=0; i<100 && run == true; i++)
  {
     for(int j=0; j<100 && run == true; j++)
     {
       if(i==10) run=false;
     }
  }
}


--
class God : public ChuckNorris { };

Dieser Post wurde am 22.12.2004 um 21:34 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
23.12.2004, 09:52 Uhr
Oliver
S2-Pixelgeneral



C++:
void DasDarfDannNichtMehrGemachtWerdenWirdAberLeiderGemacht()
{
    // mache irgendetwas
}


bool run=true;

while(run)
{
  for(int i=0; i<100 && run; i++)
  {
     for(int j=0; j<100 && run; j++)
     {
    if(i==10) run=false;
    DasDarfDannNichtMehrGemachtWerdenWirdAberLeiderGemacht()
     }
  }
}




klappts auch nicht mehr. Man könnte dann höchtens noch ein continue dazwischenmachen, damit er sofort prüft:



C++:
void DasDarfDannNichtMehrGemachtWerdenWirdAberLeiderGemacht()
{
    // mache irgendetwas
}


bool run=true;

while(run)
{
  for(int i=0; i<100 && run; i++)
  {
     for(int j=0; j<100 && run; j++)
     {
    if(i==10){ run=false; continue; }
    DasDarfDannNichtMehrGemachtWerdenWirdAberLeiderGemacht()
     }
  }
}



Aber ist das dann schneller als die goto Variante?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
23.12.2004, 09:56 Uhr
(un)wissender
Niveauwart


Goto ist hier perfekt. Selbst Java hast das mit gelabelten break und continue realisiert.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
23.12.2004, 10:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oder man nimmt ein einfaches else
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
23.12.2004, 10:40 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von (un)wissender:
Goto ist hier perfekt. Selbst Java hast das mit gelabelten break und continue realisiert.

Naja, also nur weil Java da ein Statement fehlt namens

C++:
break <level>


Wobei <level> angibt, über wie viele Schleifen gebreakt werden soll, ist die goto keine gute Lösung, eine perfekte schon garnicht.

In C++ verbietet sich goto sowieso in recht vielen fällen, bei folgendem Code :

C++:
for(int i=0; i<100; ++i) {
  std::string str var;
   if (i==10) goto ende;
}

...
ende:


ist zB die Frage gerechtfertigt, ob hier nicht ein fettes Speicherloch entsteht (kann noch nicht mal sagen, ob das der Compiler überhaupt zuläßt, habe es nicht ausprobiert).

Im sinne eine Strukturierten Programmierung verbietet sich goto ohnehin komplett. Im Sinne einer überschaubaren, adäquaten Problemlösung ist meiner Meinung nach die Routine, die aus geschachtelten Schleifen besteht, in zwei Funktionen zu unterteilen: die eine funktion beinhaltet die innere schleife und signalisiert über den Rückgabewert, ob die äußere Schleife gebreakt werden soll.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
23.12.2004, 12:48 Uhr
~kronos
Gast



C++:
void GeneriereLottozahlen(char*lottozahlen)
{
    memset(lottozahlen,0,6);
    for(int i=0;i<6;++i)
      do
      {
            lottozahlen[i]=Rnd(49,1);
        } while(strchr(lottozahlen,lottozahlen[i]);
}


Dieser Post wurde am 23.12.2004 um 13:07 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
23.12.2004, 12:52 Uhr
~kronos
Gast


Ups, Mod bitte cpp-tag hinmachen, danke und FRÖHLICHE WEIHNACHTEN EUCH ALLEN!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: