[C++] - Zählprogramm zählt nicht ;) - Anfänger

Noeden

Erfahrenes Mitglied
C++ -Erledigt- - Zählprogramm zählt nicht ;) - Anfänger

Hallo Leute,

komme mir bissl dämlich vor :-D Arbeite gerade einen C++-Workshop durch und gefällt mir gut. Soll zur Übung von Schleifen ein Programm schreiben, das von 1 bis 10 und wieder bis 1 runterzählt und die Zahlen ausgibt. Hinter der letzten soll kein Komma sein. Meine Ausgabe sind aber nur 9en.

#include <iostream>


int main ()
{
int a,b; b = 1;
for (a=1;a>0;a+=b)
{
std::cout << a << ", " << std::flush;
if(a=10) {b=-1;}
}
std::cout << a << std::endl;
}

Dankeschön, ist mir Sicherheit ganz simpel!
 
Zuletzt bearbeitet:
Hi
bin auch Anfänger, aber hast du da nicht eine endlos Schleife. Da du sagst, die Schleife soll laufen solange a>0 ... was ja immer der Fall ist außer du kommst ins 32te bit der int (Vorzeichenbit) bei dem dann die Zahl negativ wird.

Also mach lieber a<11 oder a<=10. So bricht die Schleife ab sobald a >10 wird.
Dann noch eine 2te Schleife die von 10 bis 1 zählt.
 
1. Nutze doch bitte Code-tags :)
2. Was du in deiner if meinst ist sicher
C++:
if(a==10)
und nicht
C++:
if(a=10)
, denn du willst sie ja vergleichen und nicht a den Wert 10 zuweisen
 
Ein typischer Fehler bei c und anderen Sprachen, welche keinen Boolschen-Typ kennen bzw. anderen Typen implizit konvertieren. Deshalb hat sich in vielen Projekten als Konvention die umgedrehte Schreibweise durchgesetzt.

C:
if(10 == a)

Wenn man ein Gleichheitszeichen vergisst, gibt es einen Compile-Fehler.
 
Moin,

bin auch Anfänger, aber hast du da nicht eine endlos Schleife. Da du sagst, die Schleife soll laufen solange a>0 ... was ja immer der Fall ist außer du kommst ins 32te bit der int (Vorzeichenbit) bei dem dann die Zahl negativ wird.
Also mach lieber a<11 oder a<=10. So bricht die Schleife ab sobald a >10 wird.
Dann noch eine 2te Schleife die von 10 bis 1 zählt.

nein, eine Endlosschleife ist es nicht, da ja innerhalb der Schleife, sobald 'a' den Wert 10 erreicht der Inkrementor 'b' von +1 auf -1 gesetzt wird, sodass die Schleife wieder solange runterläuft, bis 'a' den Wert '0' erreicht.

Vlt. ein bisschen ungewöhnlich, sollte aber funktionieren (hab's allerdings auch nicht ausprobiert) :p

Gruß
Klaus
 
Wie ihr meinem zweiten Post entnehmen könnt, bin ich selber drauf gekommen, der Tipp mit der umgekehrten Schreibweise ist aber super und den nehm ich dankend an :)

Wieso ist das denn ungewöhnlich? wie würdest Du das denn machen?

Danke an alle!
 
Moin,

Wieso ist das denn ungewöhnlich? wie würdest Du das denn machen?

Nein, da hast Du mich mißverstanden ... Du kannst das schon durchaus so machen!

Mit ungewöhnlich meinte ich eher, dass es nicht unbedingt üblich ist, innerhalb einer solchen Schleife rauf und wieder runter zu zählen!
Bei den meisten Anwendungen geht es wohl immer nur eine Richtung :p

Gruß
Klaus
 
Zurück