C++ Eingabe: Name, Ausgabe: Wert der Variablen mit diesem Namen?
Der Benutzer gibt einen String ein, zum Beispiel: "Hallo." Ich habe auch eine Variable string Hallo = "Tschüss."
Wenn der Nutzer Hallo eingibt, soll Tschüss zurückgegeben werden, wenn er etwas anderes eingibt, soll nichts zurückgegeben werden.
Wie geht das?
5 Antworten
Ich habe dir mal so ein Programm geschrieben:
#include
<iostream>
using namespace std;
int main()
{
string eingabe;
cin >> eingabe;
if(eingabe == "Hallo"){
cout << "Tschuess" << endl;
}else{
return 0;
}
}
In der if Abfrage überprüfst du einfach ob die Eingabe 'Hallo' ist
und falls ja --> cout Tschuess, falls nicht wird 0 zurückgegeben
Wenn du programmieren lernen willst, schliess dich in deine Kammer ein, PC, Kaffeemaschine, und Bücher und/oder Google. Dann bleib dran, bis du deine Aufgabe gelöst hast. So geht das.
cin in der konstellation funktioniert meines wissens nach nur mit Datentyp int. für strings nimmt man getline oder irre ich mich
Funktioniert einwandfrei, habs eben mal ausprobiert.
Cin funktioniert meines Wissens nach mit allen Datentypen, du musst nur weiter oben initialisieren. Getline geht natürlich auch, macht aber wenig Sinn wenn eh nur ein einziges Wort abgefragt wird.
Du Möchtest anhand der Eingabe die Variable aussuchen deren Inhalt ausgegeben werden soll?
Dafür würde sich eine Hashmap gut eignen, HashMap<String, String>, vorrausgesetzt ist natürlich dass du immer nur einen Wert pro Variable zuweisen willst.
in c++ wär das:
std::unordered_map<string, string> map;
map["Hallo"] = "Tschüß";
string eingabe;
cin >> eingabe;
cout << map[eingabe]; //Ausgabe wär jetzt Tschüß
* musst noch include und ISO c++11
#include <string>
#include <unordered_map>
Mit if/else clauses. Das kannst du im Internet nachlesen :)
wie es aussieht kannst du nichtmal nen string deklariern und definieren
Ich glaube nicht, dass das möglich ist. Mach es einfach mit einer switch-Abfrage, z. B. so: char eingabe[1000]; oder string eingabe; cin >> eingabe; switch(eingabe) { case "Hallo": cout << "Tschüss"; break; case "Wie gehts": cout << "Gut, dir auch?"; break; default: cout << "Falsche Eingabe."; break; }
Nein, ich habe ganz viele strings, zum Beispiel:
string Hallo = Tschüss;
string Wie gehts = Gut, dir auch;
usw.
ganz ganz viele, so das es mit if clauses zu umständlich wird. Der User gibt einen String ein und kriegt den Wert der Variablen zurück, die genau wie der string heißt.
Dafür solltest du eine Hashmap verwenden, bin mir nicht sicher OB das irgendwie gehts aber selbst wenn, dann macht man das nicht so. Niemals.
Wenn du wirklich viele Daten hast, kannst du sie in eine Datenbank einspeichern und den Wert aus der entsprechenden Zeile auslesen.
Das heißt: Wert aus Zeile "Hallo" ist "Tschüss"
Danke, aber ich habe mich falsch ausgedrückt, konkret geht es um das züchten von Monstern. Der User gibt zum Beispiel ein Cabuno-Oroto oder Utu-Mokto oder Retzi-Morinto (Das sollen jetzt alles Kombinationen von Monsternamen sein.) Und gleichzeitig habe ich viele Strings, z.B.
string Cabuno-Oroto = "Alex"
string Utu-Mokto = "Nevado"
Wenn der User eine Eingabe macht, soll also der Wert des Strings mit dem jeweiligen Namen ausgegeben werden.