• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

C++ Frage

phhs

NPC
Mitglied seit
24.06.2012
Beiträge
2
Reaktionspunkte
0
hallo zusammen

Ich lese zurzeit ein Buch über C++ und jetzt habe ich hier einen Teil eines Quelltext bei dem ich nicht nachkomme:

vector<double> messwerte(20);

int anzahl = 0;
char c;

do
{
cout << "Geben Sie denn " << (anzahl+1) << ". Messwert ein: " << endl;

c = cin.peek();
if(cin.peek() != 'e')
{
cin >> messwerte[anzahl];
char cend = cin.get();
anzahl++;

}

} while (c != 'e');


Das ist ein Teil eines Programms das Messwerte einliest und danach denn Durchschnitt errechnet. Wenn man während dem abspeichern "e" eingibt
wird das abspeichern beendet und der Durchschnitt wird berechnet. So viel zum Zweck des Programms.
Ich verstehe jetzt einfach nicht für was die Zeile "char cend = cin.get()" gut ist. Könnte mir das bitte jmd verständlich (die Erklärung im Buch verstehe ich nicht wirklich gut) erklären??
 
Ich verstehe jetzt einfach nicht für was die Zeile "char cend = cin.get()" gut ist. Könnte mir das bitte jmd verständlich (die Erklärung im Buch verstehe ich nicht wirklich gut) erklären??
Erstmal fällt mir auf, dass die Abfrage nach dem Zeichen 'e' durch die While-Schleife und If-Abfrage doppelt geprüft wird, möglicherweise unnötig, wenn man eine Schleife verwenden würde, die nach Erfüllung der Bedingung diese sofort verlässt.

Außerdem wird 'Anzahl' beim verlassen der Schleife um 1 erhöht, weiß nicht ob das aufgrund der Null-Terminierung so gewollt ist, könnte sein.
Kann ich mir aber eher nicht vorstellen, vielleicht gibt es einen anderen Grund.

So wie ich das verstanden habe, ermöglicht cin.get() die Eingabe über die Tastatur einer Zeichenfolge und übergibt diese dann an die Variable 'cend'. Sicher bin ich mir aber nicht, mit C++ habe ich relativ lange nicht mehr viel zu tun.

Hier gibt es ein Beispiel in der cin.get verwendet wird und eine Referenz zu Get:
istream::get - C++ Reference
 
ok...was cin.get() macht ist mittlerweilen klar
aber für was ist "char cend" (im Buch wird "char cend" in der Erklärung überhaupt nicht erwähnt :/)??

PS: Anzahl ist dafür da zu zählen wie viele Werte bereits eingegeben wurden damit man nachher denn Durchschnitt berechnen kann.
 
ok...was cin.get() macht ist mittlerweilen klar
aber für was ist "char cend" (im Buch wird "char cend" in der Erklärung überhaupt nicht erwähnt :/)??

PS: Anzahl ist dafür da zu zählen wie viele Werte bereits eingegeben wurden damit man nachher denn Durchschnitt berechnen kann.
na von meinem Verständnis ist cend der Variablenname in dem die Eingabe (die durch cin.get() ermöglicht wird) gespeichert wird. Und char ist einfach der Datentyp.
 
Bauen sie vielleicht nur eine kleine Pause nach der Eingabe des Messwerts ein? Das du nochmal auf Enter drückst, damit es weitergeht?
 
Char steht für Character also Zeichen, damit dem Compiler sozusagen klar ist, dass es sich nicht um Zahlen(Integer) handelt. Allerdings habe ich gerade festgestellt, dass es sich zwar um eine Variable handelt, aber anscheinend eine die schon vorgegeben ist.

char cend deklarieren (Eingabewert der Tastatur)
N Dame Problem: nqueen Strukturreferenz

Am besten du nimmst die Zeile einfach mal raus und schaust was passiert, dann dürfte relativ schnell klar sein, was diese bewirkt. Vielleicht musst du noch den Debugger ausschalten, damit dieser nicht verhindert, dass das Programm startet.
 
Zuletzt bearbeitet:
Zurück