Do-While schleife umwandeln....
-
Hallo zusammen,
ich bin die ganze Zeit am überlegen wie ich eine gewöhnliche Do-While Schleife als For-Schleife ausdrücken kann???
Eine For Schleife als Do-While schleife ist ja möglich z.B.
int i=0
if (i<x)
{
do
{ // do something
i++;
}
while (i<x)
}Anders herum fällt es mir jedoch schwer.
Vielen Dank für eure Mithilfe.
-
Naja,so z.B.
for(int i(0),bool flag(true); i < x || flag; i++,flag = false){/* */}
-
Steckt denn ein bestimmter Sinn dahinter? Ist das vielleicht eine Schulaufgabe oder einfach nur Interesse? Denn du verbesserst nicht gerade die Lesbarkeit deines Codes.
-
Ich vermute das es wohl eine Prüfungsfrage werden könnte.
Ich weis das es nicht umbedingt Sinn macht aber es geht hierbei wohl um das Verständniss.
Kann man das auchanders ausdrücken als es 17_56 angegeben hat?
Kapier das nicht so ganz.
Vielen Dank
-
17_56 schrieb:
Naja,so z.B.
for(int i(0),bool flag(true); i < x || flag; i++,flag = false){/* */}
int i=0 if (i<x) { do { // do something i++; } while (i<x) }
würde bei mir zu
for(int i=0; i<x; i++)
das if kannst du dir dann ja sparen
-
Ganz simpel könnte man es wohl so machen, denke ich:
bool bGoOn=true; for(;bGoOn;) { if(/*...Abbruchbedingung...*/) { bGoOn=false; } }
-
Könnte mir bitte jemand das Beispiel von 17_56 etwas ausführlicher erklären bzw. den Term etwas detaillierter gliedern.
Komme einfach nicht dahinter.
-
for(int i(0),bool flag(true); i < x || flag; i++,flag = false){/* */}
int i;
for ( i=0 , bool flag (true) ;
i<x || flag;
i++, flag = fals )
{
// do something
}ist das das gleiche wie das hier????
int i;
i=0;
do
{
// do something
}
while (i<x);Bin ratlos... Vielen Dank
-
ich glaube, 17_56 hat da was falsch bei dir gelesen, weil du dich weigerst, cpp-tags zu nutzen...
ABCD-Waffe schrieb:
int i=0 if (i<x) { do { // do something i++; } while (i<x) }
würde bei mir zu
for(int i=0; i<x; i++)
das if kannst du dir dann ja sparen
Dem kannst du da schon eher glauben ^^
bb
-
Das Problem ist aber das ich keine for-Schleife gegeben habe die ich dann in eine do-while Schleife umwandeln soll sonder ich habe eine do-while Schleife gegeben die ich in eine for-Schleife umwandeln soll....
-
Soll ich das jz noch ma hier hinkopieren?
Wo ist denn dein Problem?
if (i < x) { do { // do something i++; } while (i<x); }
=>
wenn i kleiner x ist, dann: punkt a: incrementiere i wenn i kleiner als x ist, dann gehe wieder zu punkt a
das könnte man auch so schreiben:
punkt a: wenn i >= x, gehe zu punkt b incrementiere i wenn i < x, zu punkt a punkt b:
jz sieht man ja schon, dass die bedingungen zwar nicht gleich sind, aber etwas gemeinsam haben: sie schließen sich gegenseitig aus - also reicht es ja, auf eine von beiden zu untersuchen...
punkt a wenn i >= x, gehe zu punkt b increment i punkt b:
dafür könnte man auch das schreiben:
punkt a: wenn _nicht_ (i < x), gehe zu punkt b increment i punkt b:
und für so was hat man eine for-schleife:
for (/*ggf. deklarierung und initialisierung der variablen*/; /*Bedingung (so lange die Bedingung erfüllt ist weitermachen*/; /*in jedem Durchgang zu erfüllenden (trivialen) Aufgaben - z.Bsp. i++*/)
also:
/*punkt a:*/ for (/*nichts*/; i < x /*so lange i kleiner x ist soll er weitermachen*/; i++) { //hier kommt in dem bsp. nichts hin } /*punkt b:*/
also ist die Lösung diese:
for (; i < x; i++) {}
was man auch oft so sieht (der anweisungsblock ist leer, also kann man ihn auch weglassen und dafür ein semikolon nach der schließenden klammer der for-schleife machen; ++i ist allgemein i++ vorzuziehen (was dir aber (zumindest zur Zeit noch) völlig egal sein kann ^^)):
for (; i < x; ++i);
bb
-
Hallo unskilled,
vielen herzlichen Dank für deine ausführliche Erklärung.
Leider haben wir aneinender vorbei geredet.
Ich habe eine ganz normale do-while schleife gegeben. ( OHNE EINE IF Anweisung davor)do { // do something i++; } while (i<x); }
Diese soll mit einer FOR Schleife realisiert werden. Ist das möglich???Wenn ja denke ich das es nur mit einer bool- schen Information möglich ist.
-
Wo ist das Problem?
do { // do something i++; } while (i<x); }
->
for( i = 0; i < x; i++ ) { // do something }
-
1. in deinem ersten post is das if (...) aber mit dabei
2. [@Guest1]
Guest1 schrieb:
do { // do something i++; } while (i<x); }
!=
for( i = 0; i < x; i++ ) { // do something }
weil bei der do-while geschichte auf jeden fall einmal i incrementiert wird, bei der for-schleife aber nicht...
bb
-
Huch. Mein Fehler. Ich bitte um Entschuldigung.
-
In meinem 1.Post habe ich geschrieben das es möglich ist eine for-Schleife als do-while Schleife auszudrücken.( mit Hilfe der IF Funktion )
Ich möchte aber eine gewöhnliche Do-While-Schleife ( OHNE IF ) als FOR- Schleife ausdrücken.
Wäre euch wirklich sehr dankbar um Tipps. Wäre wichtig. Vielen Dank.
-
Wäre wirklich sehr wichtig. Vielen Dank
-
dann geb doch mal ein Beispiel im Formart
DO-While:
//Hier kommt deine Loop rein
->
//hier kommt dann deine for rein
dann können wir dir ein System entwickeln...
-
bool first = true; // geht nicht in Schleifenkopf, deshalb Deklaration vorher for (int i = 0; i < x || first; ++i, first = false) { // do something }
Aber was bezweckst du damit? Do-While-Schleifen haben ihren eigenen Anwendungsbereich, und man sollte nicht krampfhaft versuchen, sie in For-Schleifen umzubiegen...
-
Nexus schrieb:
Aber was bezweckst du damit? Do-While-Schleifen haben ihren eigenen Anwendungsbereich, und man sollte nicht krampfhaft versuchen, sie in For-Schleifen umzubiegen...
Das hat er bereits erwähnt. Ich habe ihn auch gefragt (=> Seite 1).
-
Also ich persönlich stehe auf das hier:
int N = ... for (int i = 0; i < N; ++i) { if (BedingungErfüllt) { .... break; } }