Veröffentlicht 22. November 200717 j 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...
22. November 200717 j 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
22. November 200717 j 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...
22. November 200717 j 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"); }
22. November 200717 j Du merkst schon, daß deinem while die Bedingung fehlt? Und warum hast du das innere total verändert?
22. November 200717 j oh stimmt da fehlt die Bedingung... Aber wie meinste das das ich das innere total verändert hab?
22. November 200717 j 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.
22. November 200717 j while (iSchleife > iZaehler) { if (iSchleife < iZaehler) { sZeile[iSchleife] =='e'; } sZeile{iSchleife] = 'E'; } Meinst du das das so sein sollte???
22. November 200717 j Einfache Antwort: Nö. Andere Frage: Möchtest du nur die for-Schleife mit einer while ersetzen?
22. November 200717 j 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
22. November 200717 j 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
22. November 200717 j 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
23. November 200717 j 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.
23. November 200717 j 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!
23. November 200717 j 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
24. November 200717 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.