Probleme beim setzen von geschweiften Klammern
-
Hey,
kann hier mal jemand versuchen mir zu erklären wie ich die gechweiften klammern setzten muss und wo? Habe mal als Übung ein kleines Prog geschrieben doch es funktioniert halt nicht weil ich die Klammern falsch gesetzt habe.
Hier der source code:// Ratezahl.CPP
// Ein Besispiel fuer do ... while und if.
// Drei Versuche, um eine Zufallszahl zu raten.#include <iostream>
#include <cstdlib> // fuer rand()
#include <ctime> // fuer srand()using namespace std;
int main ()
{
int geszahl, eingzahl, n=1;srand ((int) time (NULL)); // "mehr Zufall"
do
{
geszahl = rand (); // Zufallszahl
}
while (geszahl > 10); // kleiner 11 erzeugencout << " Bitte geben Sie eine ganze zahl ";
cout << "zwischen 0 und 10 ein: ";do
{
cin >> eingzahl; // Zahl einlesen
if (eingzahl == geszahl) // Treffer
{
cout << "\nHerzlichen Glueckwunsch \n";
cout << "- und das beim " <<n<<". Versuch!";
}
else
{
if (n == 3) // 3. Versuch negativ
cout << "\nSorry, die gesuchte Zahl war die ";
cout << geszahl <<" .";
}
else
{
if (eingzahl < geszahl)
{
cout << "\nDie gesuchte Zahl ist groesser!";
cout << "\nNeue Zahl:" ;
}else
{
cout << "\nDie gesuchte Zahl ist kleiner!";
cout << "\nNeue Zahl:" ;
}
}
n++; // n zaehlt Versuche
}while ((eingzahl != geszahl) && (n < 4));
return 0;
}
Bye Kiste
-
Ich hab mal alles eingerückt.
Les es dir noch einmal genau durch.// Ratezahl.CPP // Ein Besispiel fuer do ... while und if. // Drei Versuche, um eine Zufallszahl zu raten. #include <iostream> #include <cstdlib> // fuer rand() #include <ctime> // fuer srand() using namespace std; int main () { int geszahl, eingzahl, n=1; srand ((int) time (NULL)); // "mehr Zufall" do { geszahl = rand (); // Zufallszahl } while (geszahl > 10); // kleiner 11 erzeugen cout << " Bitte geben Sie eine ganze zahl "; cout << "zwischen 0 und 10 ein: "; do { cin >> eingzahl; // Zahl einlesen if (eingzahl == geszahl) // Treffer { cout << "\nHerzlichen Glueckwunsch \n"; cout << "- und das beim " <<n<<". Versuch!"; } else { if (n == 3) // 3. Versuch negativ cout << "\nSorry, die gesuchte Zahl war die "; cout << geszahl <<" ."; } else { if (eingzahl < geszahl) { cout << "\nDie gesuchte Zahl ist groesser!"; cout << "\nNeue Zahl:" ; } else { cout << "\nDie gesuchte Zahl ist kleiner!"; cout << "\nNeue Zahl:" ; } } n++; // n zaehlt Versuche } while ((eingzahl != geszahl) && (n < 4)); return 0; }
Das nächste Mal in [*cpp]-Tags.
Und such mal mit Google nach Volkards C++-Kurs
-
Hey,
es klappt einfach nicht ich bekomme es nicht hin
wo ist der Fehler?// Ratezahl.CPP // Ein Besispiel fuer do ... while und if. // Drei Versuche, um eine Zufallszahl zu raten. #include <iostream> #include <cstdlib> // fuer rand() #include <ctime> // fuer srand() using namespace std; int main () { int geszahl, eingzahl, n=1; srand ((int) time (NULL)); // "mehr Zufall" do { geszahl = rand (); // Zufallszahl } while (geszahl > 10); // kleiner 11 erzeugen { cout << " Bitte geben Sie eine ganze zahl "; cout << "zwischen 0 und 10 ein: "; } do { cin >> eingzahl; // Zahl einlesen { if (eingzahl == geszahl) // Treffer { cout << "\nHerzlichen Glueckwunsch \n"; cout << "- und das beim " <<n<<". Versuch!"; } else { if (n == 3) // 3. Versuch negativ { cout << "\nSorry, die gesuchte Zahl war die "; cout << geszahl <<" ."; } else { if (eingzahl < geszahl) { cout << "\nDie gesuchte Zahl ist groesser!"; cout << "\nNeue Zahl:" ; } else { cout << "\nDie gesuchte Zahl ist kleiner!"; cout << "\nNeue Zahl:" ; } n++; // n zaehlt Versuche {while ((eingzahl != geszahl) && (n < 4)); return 0; }
-
Diese Version ist schlimmer als die erste. Wie soll das funktionieren, wenn du 11 geschweifte Klammern aufmachst, aber nur 7 wieder zumachst?
So sieht die Stuktur deines Codes aus:
int main () { do { } while (); // Ist dir klar, das dieses while zu // der darüberstehenden Schleife gehört? // Wenn es zum nachfolgenden Block gehören // soll, darf da kein Semikolon hin. // dieser Block hat gar keine Kontrollanweisung. // Das ist kein Fehler, aber wahrscheinlich nicht das, // was du willst... { } do { { if () { } else { if () { } else { if () { } else { } // Wieder ein Block ohne Kontrollanweisung, darin // ein while ohne Schleifenkörper. Nicht verboten, // aber auch hier wieder wahrscheinlich nicht be- // absichtigt. { while (); return 0; }
Wie wäre es, wenn du ein Struktogramm anfertigst, und das Programm danach erstellst? Dann wäre auch besser zu erkennen, was du eigentlich willst. Dein Rumprobieren mit den Klammern macht es nur noch schlimmer.