Anfänger in C++ kommt nicht weiter bekomme immer einen fehler bei if Befehl



  • Ich würde dir vector<> und eine Schleife empfehlen, anstatt den Code fünfzehn Mal zu kopieren.



  • Ok wenn du da vieleicht nen kleines anschaungs Beispiel für mich hättest, denn wie gesagt ich bin noch ganz neu dabei. Habe gestern erst damit angefangen.



  • Da ist das aber ein ehrgeiziges Vorhaben 👍 Die meisten beginnen eher mit einem "Hello World".

    Für den Ansatz benötigst du als erstes eine Struktur, die die Fragen (und Antworten) zusammenfasst:

    struct QuizFrage
    {
      string frage, antwort[4];
      int richtig;
    };
    

    Der nächste Schritt besteht darin, einen vector<QuizFrage> anzulegen und zu füllen, und dann kannst du mit einer Schleife die Fragen ausgeben und die Antworten des Nutzers mit der korrekten Lösung vergleichen.



  • Hmm werde es mir mal anschauen und versuchen um zu setzten, das Hallo Welt, hatte ich gestern auch schon gemacht genau wie das Fahrenheit in Celsius umrechnen, war mit aber zu langweillig 😉

    Habe mir gestern glaube ich 4 Stunden lang Videos bzw. Tuts bei Youtube angeschaut und einfach mal los gelegt?

    Brauche ich dafür (vektor) eigentlich ne neue Bibliothek die dazugeladen werden muss?



  • Patejoker schrieb:

    Habe mir gestern glaube ich 4 Stunden lang Videos bzw. Tuts bei Youtube angeschaut und einfach mal los gelegt?

    Nur ein Tip: Besorg dir ein gutes Buch und lies dich dort ein 😉

    Brauche ich dafür (vektor) eigentlich ne neue Bibliothek die dazugeladen werden muss?

    Nein, nur den Header <string>



  • Wenn ich das nun versuche umzusetzen sieht der erste Teil so aus:

    // Wer wird Millionär.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    struct QuizFrage
    {
      string frage, antwort[4]; 
      int richtig;
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	QuizFrage Fragen;
    
    	Fragen.frage = "Welcher ""Vogel"" hat keine Feder?";
    	Fragen.antwort = "a - Blaumeise         b- Gruenschnabel   c - Rotkehlchen       d- Goldammer "; /*Hier kommt ne Fehler
    																									 meldung das der Ausdruck eine 
    																									 veränderbare Ivalue sein muss*/
    

    Nur Frage ich mich jetzt wie ich die 4 Antworten hinschreiben muss und wie ich Ihm sagen kann welche die Richtige ist? Desweiteren wenn ich zur Frage 2 komme muss ich das auch ein

    QuizFrage Fragen2
    

    erstellen?



  • antwort ist ein Array, da mußt du die Elemente einzeln füllen (alternativ baust du dir einen Konstruktor, der 5 Strings und einen int schluckt und selbständig verteilt). Und für jede Frage eine eigene Variable anzulegen halte ich für sinnlos, genau dafür wurden Arrays und Containerklassen (wie vector<>) erfunden.



  • Erst mal danke ich dir das du dir die Zeit genommen hast mir ein wenig unter die Arme zu greifen. Werde mir nun mal die Sache mit den Arrays anschauen 😉

    Mal sehen ob ich das Heute noch was hinbekomme



  • Ich versuche gerade was was ich sowieso net so einfach hinbekomme, ich denke mal ich habe irgendwo nen Denk fehler, denn wie bekomme ich jetzt ohne ne if SChleife den Vergleich ob die Antwort Richtig war und gehe dann zur 2ten Frage

    Hier mal mein Code:

    // Wer wird Millionär.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    struct QuizFrage
    {
      string frage; 
     string antwort[4]; 
      int richtig;
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	QuizFrage Fragen;
    
    	Fragen.frage = "Welcher ""Vogel"" hat keine Feder?";
    	Fragen.antwort[0] = "a- Supermann";
    	Fragen.antwort[1] = "b- Batman";
    	Fragen.antwort[2] = "c- Spiedermann"; 
    	Fragen.antwort[3] = "d- Meine kleine Maus";
    
    	cout << Fragen.frage <<endl;
    	cout << Fragen.antwort[0]<<" " << Fragen.antwort[1]<<" " << Fragen.antwort[2]<<" " << Fragen.antwort[3] <<endl;
    
    	getchar();
    
    	string Antwort1;
    	cout << " Die richtige Antwort lautet: " ; cin >> Antwort1 ;
    

    Ich denke das wird einfacher sein wenn ich bei dem ganzen if **** bleibe, oder ?!



  • das if kannst du auch behalten (solange du keine Schleife draus machst), aber du solltest die richtige Antwort noch belegen:

    char antwort; //reicht völlig für a..d
    cout>>"Die Antwort lautet: "<<flush; cin>>antwort;
    if(tolower(antwort)-'a'==Fragen.richtig)
      cout<<"richtig"<<endl;
    

    PS: Um Anführungszeichen in Strings zu verwenden, nimmt man übrigens \"


Anmelden zum Antworten