Frage von kingofflights, 25

for Schleife bei C++?

Hallo,

In der Schule haben wir angefangen mit dem qfix robotics Microcontroler zu programmieren. Ich verstehe eigentlich alles, nur bei einer Aufgabe habe ich Schwierigkeiten:

Aufgabe: Ersetze die while-Bedingung des folgenden Programms durch eine for-Schleife, die 10 mal durchlaufen wird. Dabei soll der PowerOn-Befehl beim ersten Durchlauf 1 s lang dauern, beim zweiten Durchlauf 2 s, beim dritten 3 Sekunden usw.

[URL=http://www.pic-upload.de/view-30088518/Unbenannt.jpg.html][IMG]http://www2.pic-upload.de/thumb/30088518/Unbenannt.jpg[/IMG][/URL]

Meine Lösung wäre: (siehe Anhang)

Wäre das richtig?

Auf eine Rückmeldung würde ich mich sehr freuen.

Grüße kingofflights

Antwort
von Waldemar2, 14

Also erstmal muss da i<10 stehen, statt i<9 (Schleifenkopf)
und dann muss es sleep(i) heißen, vorausgesetzt, dass sleep(1) den Prozess eine Sekunde lang anhält.
Das Letzte sleep() in der Schleife ist entbehrlich, ich würde es weglassen.

Kommentar von mememememe ,

So hält es beim ersten Durchgang 0s, beim 2. 1s, usw.

Kommentar von Waldemar2 ,

Oh...

Dann versuch's mal mit sleep(i+1)

Antwort
von Mikkey, 8

Du kannst in C/C++ jede While-Schleife (while (<Bedingung>) {anweisungen}

ersetzen durch for (;<Bedingung>;) {anweisungen}

ersetzen, da braucht es kein Überlegen.

Nun kann man Initialisierungen, die vor dem while standen vor das erste Semikolon schreiben und Iterationen vom Ende der Schleife hinter das zweite Semikolon verschieben.

Antwort
von ceevee, 12

for (int i = 1; i<=10; i++) {

board.powerOn(0);

sleep(i);

board.powerOff(0);

}

----

Deine Variante würde bei jedem Schleifendurchlauf powerOn für 3 Sekunden anlassen und danach 3 Sekunden aus. Und das 10 mal.

Antwort
von kingofflights, 10

Vielen Dank für eure Antworten ich habe es nun verstanden ;)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten