Anfänger Fehler (erschlagt mich deswegen bitte nicht)



  • Habe jetzt einfach mal das lesen der schweren Kost aufgehört und probiert mir ein kleines Programm zu machen.

    Es soll mich abfragen ob wie das deutsche Wort auf Französisch heißt und danach richtig oder falsch ausgeben. Wenn das hier erstmal funzt will ich dann versuchen das er bei "Falsch" wieder von vorne anfängt.

    Code:

    #include <stdio.h>
    #include <iostream.h>

    int main()
    {
    char i = 148; // ü
    char k[10]="test";
    char j[10];

    cout<<"Franz"<<i<<"sisch Vokabeltrainer 0.1" <<endl<<endl;
    cout<<"Aufgabe:1"<<" "<<"Fahrrad"<<endl<<endl;

    cin>>j;

    if (k == j)
    cout<<"Richtig";

    else
    cout << "Falsch";

    getchar();
    getchar();
    cin.get();
    cin.get();

    return 0;
    }

    Wäre nett wenn ihr mir bei diesem eigentlich verdammt einfachen Problem helfen könntet!!

    Gruß axo



  • Es wäre hilfreich zu wissen wo denn das Problem ist, oder zumindest die Fehlerausgabe des Compilers.



  • Moin,
    1. Warum benutzt du char-Arrays und keine Strings.

    2. Was soll das bedeuten:

    cout<<"Aufgabe:1"<<" "<<"Fahrrad"<<endl<<endl;
    

    Da kannst du

    cout << "Aufgabe 1: Fahrrad"<<endl<<endl;
    

    schreiben.

    3.Du könntest einfach ne map mit deutschen und franzhösischen Werten benutzen.

    mfg
    Glamdring



  • es gibt keine Fehlerausgabe!!
    Nur es funzt einfach nicht. Er gibt immer "Fehler aus. Obwohl ja eigentlich wenn ich "test" eingebe "Richtig" kommen müsste.



  • Da muss ich Glamdrink recht geben, versuch es mal mit strings.



  • Probiere es mal hiermit:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
      string k = "test", j;
      cout << "Franz" << static_cast<char>(148) << "sisch Vokabeltrainer 0.1" << endl << endl;
      cout << "Aufgabe 1: Fahrrad" << endl << endl;
      cin >> j;
    
      if(k == j)
        cout << "Richtig";
      else
        cout << "Falsch";
    
      getchar();
      cin.get();
      // oder
      //system("PAUSE");
    
      return 0;
    }
    

    Ich habe die Klasse string benutzt statt char.
    Außerdem habe ich statt iostream.h das neue iostream genommen.
    Da es in einem Namensraum liegt, benutze ich using namespace std;
    Erlaubt ist auch z.B. std::cout.



  • Das ist es vielen Dank!!!
    Ich muss wohl noch verdammt viel büffeln. 😞



  • du kannst char-arrays bzw char zeiger nicht mit == vergleichen
    (dabei wird nur ueberprueft, ob die adresse der zeiger gleich ist
    und nicht, ob der inhalt gleich ist).
    willst du char-array vergleichen musst du strcmp aus <cstring> benutzen.

    in c++ ist es aber besser std::string zu verwenden anstelle von "nackten"
    char-feldern.



  • Wie funktioniert das mit der map? Klingt irgendwie nach Zeitersparnis?!!?
    Frage und Antwort immer neu zu definieren ist schon etwas mühselig.

    Glamdrink schrieb:

    3.Du könntest einfach ne map mit deutschen und franzhösischen Werten benutzen.




Log in to reply