Ok, also mache ich eine Übung für ein C++ - Programmierbuch, und es fordert mich auf, ein Programm zu machen, das neben diesen Namen Namen und Punkte eingibt, die beide in Vektoren gespeichert sind . Dann, nachdem ich mit der Eingabe fertig bin, werde ich aufgefordert, einen Namen einzugeben, dann wird die entsprechende Punktzahl für diesen Namen gefunden. Ex. Ich gebe "John" ein, es gibt 5 zurück, wenn ich Johns Punktzahl so ansetze.C++ cin >> nicht neu starten
Das Problem, das ich habe, ist, nachdem der Benutzer die Eingabe der Namen und Noten abgeschlossen ist, und mein Programm fordert den Benutzer auf einen Namen eingeben (um die entsprechende Punktzahl zu finden), überspringt den Code einfach über den cin
Befehl und geht weiter, mein Programm funktioniert nicht. Ich werde das volle Programm veröffentlichen, dann wird der Teil Ich brauche Hilfe mit:
#include "std_lib_facilities.h"
int main()
{
vector<string>names;
vector<int>scores;
string name = "";
int score;
while(cin >> name && cin >> score)
{
for(int i = 0; i < names.size(); ++i) // checks all previous words
{
if(name == names[i]) // if the name is used twice, exit
{
cout << "Error. Terminating...\n";
exit(4);
}
else;
}
names.push_back(name);
scores.push_back(score);
}
cout << "Enter a name, which I will find the score for. \n";
string locateName;
while(cin >> locateName) // i think the program won't accept the locateName
{
for(int i = 0; i < names.size(); ++i)
{
if(locateName == names[i])
{
cout << names[i] << "'s score is " << scores[i] << '\n';
}
else { cout << "Name not found. \n"; }
}
}
return 0;
}
Hier ist der Teil, der nicht funktioniert:
cout << "Enter a name, which I will find the score for. \n";
string locateName;
while(cin >> locateName)
{
for(int i = 0; i < names.size(); ++i)
{
if(locateName == names[i])
{
cout << names[i] << "'s score is " << scores[i] << '\n';
}
else { cout << "Name not found. \n"; }
}
}
Insbesondere die while(cin >> locateName)
. Hier sind einige zusätzliche Informationen: Immer wenn ich die Namen eingeben (John 5 Bob 6 Pete 9) drücke ich STRG + Z dann ENTER, um die cin
zu stoppen. Dann endet das Programm. Ist dies (ctrlZ), was die while(cin >> locateName)
verursacht, neue Werte nicht zu akzeptieren? Hilfe ist dankbar, danke.
Hier ist ein Hinweis/Idee - wie oft heißt es "Name nicht gefunden"? Nur einmal oder zweimal? (Ich frage das, weil, wenn Sie durch die Schleife, für jedes Element in der Schleife suchen, Sie etwas ausgeben. Wenn Sie nach Ihrem Beispiel suchen, wenn Sie nach Pete suchen, erhalten Sie: "Name nicht gefunden. \ NName nicht gefunden . \ nPetes Bewertung ist 9 \ n ") –
Off-Thema Vorschlag: Teilen Sie nicht die Namen und die Scores in zwei Vektoren eine Struktur, die beide speichert und einen einzelnen Vektor dieser Struktur machen. – user4581301
@ user4581301 Die Übung des Buches sagt, Vektoren zu verwenden. Wir haben noch keine Studien gelernt. – jiggumbob