Psycho~zicke Geschrieben 22. November 2007 Geschrieben 22. November 2007 Hallöchen!!! Ich hab mal eine frage und zwar versteh ich nicht wie man eine for Schleife in eine while Schleife umwandeln kann. Evt kann mir das ja jemand erklären... Ich weiß ist sicherlich eine doofe frage aber C scheint mir echt nicht zu liegen. Danke schlnmal im vorraus... Zitieren
baba007 Geschrieben 22. November 2007 Geschrieben 22. November 2007 FOR: für i = 0, lauf solange i kleiner als 100, schrittweise nach vorn WHILE: solange mein i kleiner 100 ist, lauf!! vergiß jedoch nicht das i schrittweise zu erhöhen Zitieren
Hexagon Geschrieben 22. November 2007 Geschrieben 22. November 2007 Moin. Ganz einfach? Also: for (int i = 0; i < 10; i++) { } könnte man so schreiben: int i = 0; while(i++ < 10) { } Hoffe das hilft. BTW: Wie immer ohne Gewähr... Zitieren
Psycho~zicke Geschrieben 22. November 2007 Autor Geschrieben 22. November 2007 Also wäre das z.b das is meine for schleife die ich in while umwandeln muss for (iSchleife = 0; iSchleife < iZaehler; iSchleife++) { if (sZeile[iSchleife] == 'e') { sZeile[iSchleife] = 'E'; } } Das ist mein Versuch... while { if (iSchleife < iZaehler) { sZeile[iSchleife] =='e'; } printf ("E"); } Zitieren
Hexagon Geschrieben 22. November 2007 Geschrieben 22. November 2007 Du merkst schon, daß deinem while die Bedingung fehlt? Und warum hast du das innere total verändert? Zitieren
Psycho~zicke Geschrieben 22. November 2007 Autor Geschrieben 22. November 2007 oh stimmt da fehlt die Bedingung... Aber wie meinste das das ich das innere total verändert hab? Zitieren
Hexagon Geschrieben 22. November 2007 Geschrieben 22. November 2007 In der for-Schleife überprüfst du ob die Zeile ein "e" ist und ersetzt es mit "E". Das innere der while-Schleife macht was völlig anderes. Zitieren
Psycho~zicke Geschrieben 22. November 2007 Autor Geschrieben 22. November 2007 while (iSchleife > iZaehler) { if (iSchleife < iZaehler) { sZeile[iSchleife] =='e'; } sZeile{iSchleife] = 'E'; } Meinst du das das so sein sollte??? Zitieren
Hexagon Geschrieben 22. November 2007 Geschrieben 22. November 2007 Einfache Antwort: Nö. Andere Frage: Möchtest du nur die for-Schleife mit einer while ersetzen? Zitieren
Psycho~zicke Geschrieben 22. November 2007 Autor Geschrieben 22. November 2007 ja ich möchte die obige For schleife durch eine while ersetzen... hab nur leider absolut keine ahnung wie das funktioniert... aber das siehst du ja selbst Zitieren
Hexagon Geschrieben 22. November 2007 Geschrieben 22. November 2007 ja ich möchte die obige For schleife durch eine while ersetzen... hab nur leider absolut keine ahnung wie das funktioniert... aber das siehst du ja selbst Ja, man merkts. :e@sy Fangen wir mal so an: for (iSchleife = 0; iSchleife < iZaehler; iSchleife++) { if (sZeile[iSchleife] == 'e') { sZeile[iSchleife] = 'E'; } } Als erstes mal das for wegnehmen und die Bedingung mitnehmen... while(iSchleife < iZaehler) { if (sZeile[iSchleife] == 'e') { sZeile[iSchleife] = 'E'; } } Dann noch die das inkrementieren von iSchleife reinbasteln: while(iSchleife++ < iZaehler) { if (sZeile[iSchleife] == 'e') { sZeile[iSchleife] = 'E'; } } Und dann müßte das klappen. Kann das grad nicht testen, aber theoretisch sollte das gehen. EDIT: Vorher iSchleife noch auf 0 setzen. Ädit2: Schau mal hier: Volkards C++-Kurs, for-Schleife Zitieren
Psycho~zicke Geschrieben 22. November 2007 Autor Geschrieben 22. November 2007 Kann das hier leider auch nicht testen mein compiler mag mich bzw mein betriebssytem nicht sonderlich. Werd es morgen ma testen und dir bericht erstatten... Danke vielmals für deine hilfe und der echt guten Erklärung... Das hab nun selbst ich verstanden :valen Zitieren
Gooose Geschrieben 23. November 2007 Geschrieben 23. November 2007 Die folgende FOR-Schleife #include<stdio.h> int main(void) { int i; for(i = 0;i <= 10; i++) { printf("%d",i); } } würde folgendermaßen aussehen while(i<=10) { printf("%d",i); i++ } Man muß auf die Abbruchbedinung achten, da du sonnst eine Endlosschleife bekommst. Zitieren
Zakum Geschrieben 23. November 2007 Geschrieben 23. November 2007 Hmm, mich würde ehrlich interesieren, wozu du eigentlich die beiden Zyklen tauschen willst? Gibts da nen speziellen Grund? Den eigentlich ist das doch nur l Arbeit ohne erkennbaren Lohn! Zitieren
Cadpax Geschrieben 23. November 2007 Geschrieben 23. November 2007 Den eigentlich ist das doch nur l Arbeit ohne erkennbaren Lohn! Ich vermute Schul-/Lehraufgabe, und da is der Sinn ganz einwandfrei gegeben. (Beschäftigen, Verstehen) -> Lernen Zitieren
Zakum Geschrieben 24. November 2007 Geschrieben 24. November 2007 Naja, irgendwie klingt das logisch! Aber am Ende verleitet das die Schüler noch zu irgendwelche Programmierekszessen, einfach weil sie denken, dass ist ganz normal, Zählschleifen durch Kopfabweisende darzustellen. Sollte mMn eigentlich ganz klar von einander getrennt werden... Aber ich glaube ich schweife ab Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.