C++ Wörter eingeben und dementsprechend handeln

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

So funktioniert das nicht mit einem C-String. Dafür musst du entweder die Stringbibliothek einbinden und einen String einlesen, den kannst du dann mit einem Gleichheitsoperator vergleichen, ansonsten eben strcmp.

Eine mögliche Lösung wäre z.B:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string eingabe;
    cout << "Ihre Eingabe: ";
    getline(cin, eingabe);
    if (eingabe == "Test" || eingabe == "test") {
        cout << "Bingo!";
    } else {
        cout << "Fail!";
    }
    return 0;
}
0
@apachy

An sich funktioniert es. Jedoch möchte ich ein Wort in einem Menü eingeben was mit Zahlen navigiert. Das heißt, man wählt eine Zahl aus und darauf folgt eine Switchfunktion, die die ganzen Zahlen abfragt. Wie bekomm ich jetzt beides unter einem Hut? Weil den string "Eingabe" kann ich ja nicht im switch nutzen.

0
@Pischi

Irgendwie kann ich dir gerade nicht ganz folgen. Du möchtest ein Wort eingeben aber es navigiert mit Zahlen? Was nun? Oder soll es eine Möglichkeit geben ein Menupunkt via Text oder seiner Nummer anzusprechen.

Etwas genauere Erklärung bitte. Insgesamt hört sich Wörter und Switch für mich aber eher nach Enum an, als nach einem Stringproblem.

0
@apachy

Also ich arbeite ja in der Konsole und ich arbeite gerade an einem Programm, welches alles mögliche mit Zahlen macht. D.h. alle verschiedene möglichen Rechnungen. So und in dem Menü wo man die Punkte 0-9 wählen kann was ungefähr so aufgebaut ist: cout << "Menü: 1 = Addieren - 2 = Subrahieren" << endl; cin >> zahl;

switch (zahl)
{
    case '1':
        Addition();
    break;
       case '2':
        Subtraktion();
        break;
}

So ist das aufgebaut. Und in so einem Menü möchte ich jetzt ein Wort eingeben. Dieses Wort soll dann mich zu einer Funktion bringen. Also eigentlich wie eine Zahl. Ich hoffe das ist etwas verständlicher.

0
@Pischi

Nun dann verzichtest du auf switch/case und nimmst if/else oder schaust dir mal Map-Container an, damit sollte das ebenfalls machbar sein. Switch will nunmal ein Int haben.

0

http://linux.die.net/man/3/strcmp

Was du vergleichst sind die Adressen der einzelnen Strings (ein 0-terminierter String in C ist ein Pointer auf eine char-sequenz, die mit '\0' endet)

Allerdings ist das was du da hast auch kein echtes C++, das ist ein Mutant aus C und C++. informiere dich mal an der Stelle über std::string.

Btw: mit ' schließt man char ein, mit " strings (bzw. char*, was einem C-string entspricht). Nicht sicher ob dass der Compiler trotzdem verkraftet, aber selbst wenn er das tut wäre es ein schlechter Stil.

Schau dir mal auf youtube tutorials an. ich glaub, das ist momentan effektiver ;)

Mein c++ Programm macht nicht was ich will?

Ich muss für eine C++ Übung folgendes Programm schreiben:

Schreiben Sie ein Programm, das zunächst eine Zeichenkette (max. 80 Zeichen) einliest und dann immer wieder ein einzelnes Zeichen einliest und die Zeichenkette ausgibt, die entsteht wenn man das zuletzt eingegebene Zeichen aus der ursprünglichen Zeichenkette entfernt. (Das Programm soll durch Eingabe eines ! beendet werden.)

das hab ich bis jetzt: #include

using namespace std;

int main () {

int n,T; char x; char w[81];

T=1;

while (T==1){ cout << "Bitte ein Wort eingeben. (max 80 Zeichen!)"; cin >> w; cout << "Bitte einen Buchstaben eingeben! (Beenden durch eingabe eines !)" << endl;

    for(x; x!='!';){ 
            cin >> x;
        for (n=0; w[n]!='\0';n=n+1) {
        if (w[n]!=x) {
            cout << w[n];}
        } 

    };

cout << "Nochmal? JA=1, NEIN=0.";
cin >> T;

};

return 0;

}

Das Problem ist, wenn ich versuche das Programm mithile der Schleife neu zu starten, lässt er mich zwar ein neues Wort eingeben, fragt mch dann jedoch sofort ob ich neu starten möcht, ohne das ich einen Buchstaben eingeben könnt. Wo liegt der Fehler bei meinem Programm? Ich such schon seit ewigkeiten, find aber nichts.

...zur Frage

Bei jeder Eingabe des Commands andere Sachen ausführen. (Geht das)?

Hallo,

wenn man "/next" eingibt, dann kommt kommt z.B. ein Text mit der Nachricht: "Next1" und wenn man "/next" nochmal eingibt dann "Next2", kann man das irgendwie programmieren?

...zur Frage

If-Else in eine Schleife binden(z.b while Schleife)(C++)?

Ich versuche die ganze Zeit if-Else in eine Schleife ein zu binden. So das der Benutzer nach der Eingabe nochmal das Gewünschte Eingibt(Alter).Aber irgendwie geht das nicht. Anstatt das die Zeile sich wiederholt wo der Benutzer sein Alter bestätigen muss, wird immer der eingegebene Alter wiederholt. Also wie schaffe ich es, das der Benutzer mit einer Schleife nach der Eingabe,noch mal sein Alter bestätigen muss. (Ich bin noch ein Anfänger)

Screenshot ist unten:

...zur Frage

Javascript: Textfelder hinzufügen sobald alle voll, wie geht das?

ich habe hier 4 Eingabe felder :

<label for="antwort1">
    <input type="text" name="antwort1" class="form-control" style="text-align: center" placeholder="Antwortmöglichkeit" maxlength="64" size="50%" required>
</label><br>
<label for="antwort2">
    <input type="text" name="antwort2" class="form-control" style="text-align: center" placeholder="Antwortmöglichkeit" maxlength="64" size="50%" required>
</label><br>
<label for="antwort3">
    <input type="text" name="antwort3" class="form-control" style="text-align: center" placeholder="Antwortmöglichkeit" maxlength="64" size="50%">
</label><br>
<label for="antwort4">
    <input type="text" name="antwort4" class="form-control" style="text-align: center" placeholder="Antwortmöglichkeit" maxlength="64" size="50%">
</label><br>

wie mache ich das dass man beim letzten das 1. zeichen eingibt darunter ein weiteres feld erscheint mit name "antwort5" und label "antwort6" und sobald man da was eingibt kommt wieder ein neues mit antwort7 und so weiter, bis maximal 8 felder da sind ? kann das jemand mir machen oder so ? danke

...zur Frage

C++ Wie kann ich den Benutzter eine Rechenart auswählen lassen. (Konsolen Anwendung)

Also ich bin dabei C++ zu lernen und ich habe schon selber versucht das dass Problem mit einer char Variable zu lösen und dann mehrere if abfragen zu erstellen aber dass funktioniert nicht ganz, außerdem ist es eine Konsolen Anwendung.Kann mir jemand helfen ?

#include <iostream>

using namespace std;

int main(){
char Rechenart;
int Summe1, Summe2, Ergebnis;

cout << "Mit welcher Rechenart wollen sie Rechnen(Multiplikation*)(Divison/)(Addition+)(Subtraktion-)";
cin >> Rechenart;
cout << "Benutzereingabe:";
cin  >> Summe1;
cout << "Benutzereingabe:";
cin  >> Summe2;

Ergebnis = Summe1 * Summe2;

getchar();

std::cout << Summe1 << Rechenart << Summe2
    << " = "
    << Ergebnis
    << std::endl;

if (true)
{
 
}

else
{

}

getchar();
return 0;
}
...zur Frage

notenauswertung in c++? :S

Aufgabenstellung: Notendurchschnitt angeben anzahl der jeweiligen noten angeben(notenspiegel) kann mir einer von euch helfen? //--------------------------------------------------------------------------- int main(int argc, char* argv[])

{

    char note;

    int anzahl = 0;

    clrscr();
    cout<<"Notenauswertung -Klasse - Autor - Datum\n";
    cout<<"Die Noten als Zahl 1..6 eingeben: \n";


    //---------------------Wiederholschleife------------------------------
    do
    {
            note = getche();
            if (note == '1')   cout<<"-sehr gut             \n";
            if (note == '2')   cout<<"-gut                  \n";
            if (note == '3')   cout<<"-befriedigend        \n";
            if (note == '4')   cout<<"-ausreichend         \n";
            if (note == '5')   cout<<"-mangelhaft          \n";
            if (note == '6')   cout<<"-ungenuegend         \n";
            if ((note<'1')||(note>'6')) cout<<"-Falsche eingabe"<<endl;
    }
   while (note != 27);

    //--------------Noten durchschnitt berechnen---------------------------

    {

    }

    // getch();
    return 0;

}

...zur Frage

Was möchtest Du wissen?