Ich bereauche Hilfe



  • ich habs mal probiert das was ich nicht kann wär das Programm mit den Multiple Choice Fragen das andere krieg ich hin



  • Hast du denn schon Ansätze, ein Konzept oder wenigstens ein paar Ideen, wie du's angehen willst?



  • wenn du nur eine richtige antwort hast, dann schreib vor allee möglichkeiten eine zahl und der user muss dann die richtige eingeben



  • ganz ehrlich jungs ich hab keine ahnung wie ich das machen kann :-S ich probier komm keinen schritt weiter 0 Plan wie es geht...



  • Was für Vorkenntnisse hast du denn?

    Du benötigst als erstes eine Datenstruktur, um eine einzelne Frage samt Antworten unterzubringen:

    struct Frage
    {
      string frage;//ich weiß, die Namenswahl ist schlechter Stil
      vector<string> antworten;
      size_t korrekt;
    };
    

    Dann brauchst du eine Möglichkeit, diese Fragen zu sammeln (ein std::vector<Frage>) und einzulesen (per fstream - die nötigen Methoden mußt du selber schreiben) und schließlich eine Schleife zum Durchführen des Quizzes:

    vector<Frage> quiz;
    ...//mit Fragen füllen
    int punkte = 0;
    for(int i=0;i<quiz.size();++i)
    {
      int antw;
      cout<<quiz[i].frage<<endl;
      for(int j=0;j<quiz[i].antworten.size();++j)
        cout<<j+1<<"\t"<<quiz[i].antworten[j]<<endl;
      cin>>antw;
      if(antw==quiz[i].korrekt)
      {
        cout<<"Korrekt\n";
        ++punkte;
      }
      else
        cout<<"Falsch - richtig wäre Antwort "<<quiz[i].korrekt<<endl;
    }
    cout<<"Sie haben "<<punkte<<" von "<<quiz.size()<<" Fragen richtig beantwortet\n";
    


  • bisher ging das C für mich einigermassen doch diese aufgabe begreif ich einfach nicht fopen und so kenn ich mich net aus darum weiss ich nicht wie ich aus dem einen file wo ich die fragen habe es hier reinholen kann danke für den code ich probier gleich mal aus wie weit ich so komme^^



  • Bitte lern richtig schreiben! Genauso wie bei C am Ende ein Semikolon gesetzt wird, wird im deutschen ein Punkt ans Ende des Satzes geschrieben. Und Deutsch ist auch noch case sensitiv. Oder kurz, deine Sätze lesen sich furchtbar.



  • Tyrdal schrieb:

    Bitte lern richtig schreiben! Genauso wie bei C am Ende ein Semikolon gesetzt wird, wird im deutschen ein Punkt ans Ende des Satzes geschrieben. Und Deutsch ist auch noch case sensitiv. Oder kurz, deine Sätze lesen sich furchtbar.

    Sorry, schreib hier immer nur kurz rein wenn ich ne Mail kriege das jemand hier geantwortet hat. Ist sonst nicht meine Art.



  • @Cstoll : Was wäre bei deinem Beispiel, der include?



  • <vector> und <string> für die verwendeten Datentypen, <iostream> für cin/cout, außerdem brauchst du noch <fstream> für die Lese-Routinen - und mußt die gesamten Fragmente zu einem kompletten Programm zusammenbauen.

    (in C dürfte es etwas schwieriger sein, weil Arrays längst nicht so einfach zu verwenden sind wie vector<>)



  • CStoll schrieb:

    <vector> und <string> für die verwendeten Datentypen, <iostream> für cin/cout, außerdem brauchst du noch <fstream> für die Lese-Routinen - und mußt die gesamten Fragmente zu einem kompletten Programm zusammenbauen.

    (in C dürfte es etwas schwieriger sein, weil Arrays längst nicht so einfach zu verwenden sind wie vector<>)

    Vector hab ich erhlich gesagt noch nie gehört. Darum blick ich net durch wie ich das coden muss.



  • Wenn du nicht weiterweißt, frag einfach 😉 Btw, zu den wichtigsten Klassen der Standardbibliothek habe ich ein paar Artikel im Magazin verfasst, die du vielleicht lesen solltest ("Aufbau der STL - Teil 1" enthält auch die vector<>en).



  • char file[50];
    
    	printf("**************************************************\n");
    	printf("***Wilkommen im multiple choice Apruefer***\n");
    	printf("**************************************************\n\n\n\n");
    
    	printf("Bitte geben sie den Namen der Prüfung ein.\n");
    	scanf("%s", &file);
    
    	strcat (file, ".txt");
    
    	FILE * fp;
    		fp = fopen("file", "w");
    

    So hab gestern meinen abend geopfert und hab das bekommen jetzt weiss ich nicht mehr weiter



  • Darfst/willst du nun C++ nutzen oder nicht? Wenn du wirklich in reinem C arbeiten willst, verschiebe ich dich eine Etage höher - ansonsten steig' bitte um auf C++ Funktionen.

    @Topic:
    Der Anfang ist ja schonmal da - als nächstes mußt du alle Fragen (und Antwortmöglichkeiten) aus deiner Datei einlesen und zwischenspeichern (obwohl - es ist auch möglich, direkt aus der Datei auszulesen, während das Quiz läuft). Aber bevor es damit weitergeht, solltest du dir überlegen, wie du die Taxtdatei mit den Prüfungsfragen aufbaust.

    PS: Und wenn du lesen willst, öffne die Datei bitte im Modus "r" 😉



  • CStoll schrieb:

    Darfst/willst du nun C++ nutzen oder nicht? Wenn du wirklich in reinem C arbeiten willst, verschiebe ich dich eine Etage höher - ansonsten steig' bitte um auf C++ Funktionen.

    @Topic:
    Der Anfang ist ja schonmal da - als nächstes mußt du alle Fragen (und Antwortmöglichkeiten) aus deiner Datei einlesen und zwischenspeichern (obwohl - es ist auch möglich, direkt aus der Datei auszulesen, während das Quiz läuft). Aber bevor es damit weitergeht, solltest du dir überlegen, wie du die Taxtdatei mit den Prüfungsfragen aufbaust.

    PS: Und wenn du lesen willst, öffne die Datei bitte im Modus "r" 😉

    Also C++ meinte der Lehrer noch nicht, leider. Darum muss es C sein. Mein Problem zur Zeit ist ich weiss nicht wie ich aus einer Datei ein Quiz einlesen kann. Was der Befehl ist.



  • Plion schrieb:

    Also C++ meinte der Lehrer noch nicht, leider. Darum muss es C sein. Mein Problem zur Zeit ist ich weiss nicht wie ich aus einer Datei ein Quiz einlesen kann. Was der Befehl ist.

    Ein Quiz am Stück einlesen kannst du mit C nicht - besonders da niemand weiß, was ein "Quiz" sein soll. Du kannst aber die einzelnen Fragen und Antworten mit fgets() (liest eine komplette Zeile) oder fscanf() (mit einer reichlichen Auswahl an Formatierungsmöglichkeiten) einlesen.



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • CStoll schrieb:

    Plion schrieb:

    Also C++ meinte der Lehrer noch nicht, leider. Darum muss es C sein. Mein Problem zur Zeit ist ich weiss nicht wie ich aus einer Datei ein Quiz einlesen kann. Was der Befehl ist.

    Ein Quiz am Stück einlesen kannst du mit C nicht - besonders da niemand weiß, was ein "Quiz" sein soll. Du kannst aber die einzelnen Fragen und Antworten mit fgets() (liest eine komplette Zeile) oder fscanf() (mit einer reichlichen Auswahl an Formatierungsmöglichkeiten) einlesen.

    #include "stdafx.h"
    #include <string.h>
    
    int main(int argc, char* argv[])
    {
    	char file[50];
    	char antwort[300];
    
        printf("*******************************************\n");
        printf("***Wilkommen im multiple choice Apruefer***\n");
        printf("*******************************************\n\n\n\n");
    
        printf("Bitte geben sie den Namen der Pruefung ein.\n");
        scanf("%s", &file);
    
        strcat (file, ".txt");
    
        FILE * fp;
            fp = fopen("file", "a");
    
    		while (!feof (fp))
    		{
    		fscanf(fp,"[^\n]\n",&antwort);
    		fprintf(fp,"%s",antwort);
    		}
    }
    

    meins du sowas in der art?



  • Im Prinzip ja - nur solltest du noch etwas Struktur in die Schleife einbringen und zwischendurch auch abfragen, welche Antworten der Anwender gegeben hat.

    (und fopen() verwendet immer noch den falschen Parameter - "w" schreibt in eine neue Datei (löscht notfalls alte Inhalte), "a" schreibt ans Ende einer vorhandenen Datei, "r" liest aus einer vorhandenen Datei)



  • Ok sorry habs vorher vergessen.
    Also ich bin jetzt wieder ein Schritt weiter das Programm zeigt mir jetzt ein normlaes txt file an zu dem hab ich folgenden Quellcode benutzt. Jetzt muss ich was tun das ich auch antworten kann.

    Quellcode :

    #include "stdafx.h"
    #include <string.h>
    
    int main(int argc, char* argv[])
    {
    	char file[50];
    	char antwort[300];
    
        printf("*******************************************\n");
        printf("***Wilkommen im multiple choice Apruefer***\n");
        printf("*******************************************\n\n\n\n");
    
        printf("Bitte geben sie den Namen der Pruefung ein.\n");
        scanf("%s", file);
    
        strcat (file, ".txt");
    	printf("%s", file);
    
    FILE * fp;
            fp = fopen(file, "r");
    
            while (!feof (fp))
            {
            fscanf(fp,"%[^\n]\n",antwort);
            printf("%s",antwort);
            }
    }
    

Anmelden zum Antworten