Ich habe Kohlenstoff eingegeben, dass (soweit ich gesehen habe) bei deinen .element-Dateien dabei ist. Wenn ich dann aber Enter drücke kommt sehr schnell und immer wieder
Wleches Element:
Element nicht gefunden
Das kommt, weil er einen
Integer-Wert einliest. Die Eingabe eines oder mehrerer Buchstaben führt dabei zu einer Endlos-Eingabeschleife. Das Gleiche wäre auch passiert, wenn du irgendeine andere Zeichenkette eingegeben hättest.
Es funktioniert nur, wenn du Zahlen eingibst, wie zum Beispiel:
1 für Wasserstoff
@Moritz: Du solltest verhindern, dass bei der Eingabe von Buchstaben eine Endlosschleife erzeugt wird. Und eine kurze Anleitung hinzufügen solltest du auch, sodass man weiß, dass man eine Nummer eingeben muss, entweder setzt du die Anleitung an den Anfang oder du gibst sie aus, wenn man einen Buchstaben eingegeben hat. Sowas wie:
Welches Element: H
Element nicht gefunden. Keine Buchstaben eingeben, sondern nur die Ordnungszahlen
Zur Vermeidung Endlosschleife durch Falscheingabe verwendest du am besten eine solche Funktion:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
int read_int() //Eine Integerzahl einlesen
{
int nVar; //Wird zum Einlesen verwendet
while(!(cin >> nVar))
//Solange das Einlesen fehlschlägt (man kann keinen String in einem int speichern),
//gibt cin "false"zurück
{
cin.sync(); //Löscht den/die eingegebenen Buchstaben
cin.clear(); //Fehlerbit löschen, sonst würde man immer noch nichts weiteres einlesen können
cout << "Falsche Eingabe." << endl; //Den Benutzer auf den Fehler aufmerksam machen
cout << "\nErneut eingeben: "; //--Hier könnte die Anleitung stehen (zB Nur Zahlen eingeben)--
}
return nVar; //Den erfolgreich eingegebenen Wert zurückgeben
}
|
Anwendung erfolgt so:
|
C-/C++-Quelltext
|
1
2
|
int eingabe;
eingabe = read_int();
|
Musst nicht die Funktion verwenden, aber wollt halt mal ein Beispiel geben. Würde dein Programm auf jeden Fall professioneller machen, wenn es bei der Eingabe eines Buchstaben nicht abstürzt.
EDIT: Und du könntest auch z.B. wenn man 0 eingibt (oder eine andere nicht verwendete Zahl) eine Hilfe anzeigen, die die eingebbaren Elemente auflistet, weil viele Leute wissen vielleicht nicht auf Anhieb, welchem Element welche Ordnungszahl zugeordnet ist