Lotto Programm erstellen, HILFE!!!



  • Hi,
    erst ma nen cooles Forum habt ihr hier....hier könnte ich mirs gemütlich machen 😃

    Spass bei Seite.
    Hab vollgendes Problem.
    Wir haben als Projekt aufbekommen ein Programm zu schreiben welches eine Lottoreihe mit einer ganzen Tippreihe vergelichen soll. Bis hierhin ja noch einfach....aber die Lottoreihen (10 an der Zahl) sollen in ne Datei geschrieben werden. das funzt auch prima, nur beim auslesen zeigt er scheisse an...

    vielleicht könnt ihr mir helfen...plz

    case 2:{
    
        ifstream examplefile ("tippreihen.txt");
        if (! examplefile.is_open())
        { cout << "Error opening file! "; system("PAUSE");exit (1); }
    
        while (! examplefile.eof())
        {
              examplefile.getline (buffer,600);
              //cout << buffer << endl;
    
                           for (int aa=0; aa<6; aa++)
                                 {
                                     for (int ab=0; ab<10; ab++)
                                      {
                                          feld[aa][ab]=(int)buffer;
                                    // a1=feld[aa][ab];
                                     //cout<<a1;
                                      }
                                    }
                                    }
      // cout <<"-----------------------------------"<<endl;
       //cout <<" 1\t 2\t 3\t 4\t 5\t 6\n";
       //cout <<"-----------------------------------"<<endl;
     for (int aa=0; aa<6; aa++)
         {
              cout <<" "<<aa+1<<" ";
                   for (int ab=0; ab<10; ab++)
                      {
                              cout <<" \t "<<feld [aa][ab];
                             }
                         cout <<"\n";
         }
    
               //cout <<"Ihre Zahlen der "<<a3+1<<". Zeile sind: "<<buffer ;
    }
    break;
    

    Das auskommentierte is erst ma Wurst. Die Textdatei in der die Zahlen sind heisst Tippreihen.txt und beinhaltet 600 Zahlen untereinander...

    Hier sieht man das malör



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

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

    Dieses Posting wurde automatisch erzeugt.



  • Henus schrieb:

    Das auskommentierte is erst ma Wurst. Die Textdatei in der die Zahlen sind heisst Tippreihen.txt und beinhaltet 600 Zahlen untereinander...

    Warum ließt du dann 600 Zeichen pro Zeile? Außerdem: warum ließt du, wenn in der Txt-Datei Zahlen stehen, diese erst als String ein und konvertierst diese danach falsch in Ganzzahlen?

    Beispiel wie du sehr einfach Zahlen aus einer Datei einlesen kannst:

    #include <fstream>
    #include <iostream>
    
    int main(int argc, char* argv[])
    {
         if(argc != 2)
            return 1;
    
         std::ifstream in(argv[1]);
         int feld[60] = { };
         if(in)
         {
              for(size_t i = 0, end = sizeof(feld) / sizeof(int); in.good() && i < end; ++i)
                   in >> feld[i];
         }
         // Zeug steht jetzt in feld.
         ...
    }
    

    Gruß Caipi



  • thx, aber ich hab noch nen paar Fragen, erst ma, die Datei aus der Ausgelesen werden soll wird doch ganz normal mit

    ifstream examplefile ("tippreihen.txt");
    

    oder?

    und wie muss ich das verändern um ein zweidimensionales Feld daraus zu erstellen?!? Währe echt gut wenn ihr mir helfen könntet...



  • Henus schrieb:

    thx, aber ich hab noch nen paar Fragen, erst ma, die Datei aus der Ausgelesen werden soll wird doch ganz normal mit

    ifstream examplefile ("tippreihen.txt");
    

    oder?

    Jup. Kannst du. (Das Beispiel von mir bezog sich nicht auf deinen Code, sondern sollte vielmehr das Prinzip verdeutlichen).

    und wie muss ich das verändern um ein zweidimensionales Feld daraus zu erstellen?!? Währe echt gut wenn ihr mir helfen könntet...

    Einfach aus der einen Schleife zwei Schleifen machen, oder aber die eine Schleife wie folgt anpassen:

    Beispiel:

    for(size_t i = 0; j = 0; in.good() && i < 6; ) // erste Array-Dimension als Abbruchbedingung
    {
        in >> feld[i][j];
        if(++j >= 10) // Wert der zweiten Array-Dimension hier ggf. anpassen
        {
            j = 0; ++i;
        }
    }
    

    oder, oder... Es gibt viele Möglichkeiten...

    Gruß Caipi



  • Super, thx. Nur noch ne Frage, was is das in.good? was macht es, und muss ich es deklarieren?



  • Henus schrieb:

    Super, thx. Nur noch ne Frage, was is das in.good? was macht es, und muss ich es deklarieren?

    Infos zu ios::good(): [1] [2].

    Gruß Caipi



  • Ok, hab den Quelltext überarbeitet....

    sieht jetzt so aus:

    case 2:{
    
        ifstream examplefile ("tippreihen.txt");
            if(argc != 2)
            //return 1;
    
         std::ifstream in(argv[1]);
         int feld[60] = { };
         if(in)
         {
              for(size_t i = 0; j = 0; in.good() && i < 6; )
    {
        in >> feld[i][j];
        if(++j >= 10)
        {
            j = 0; ++i;
        }
    }
         for (int i=0; i<6; i++)
             {
               for (int k=0; k<10; k++)
                   {
                       cout <<feld[i][j];
                   }
             }
    
      // cout <<"-----------------------------------"<<endl;
       //cout <<" 1\t 2\t 3\t 4\t 5\t 6\n";
       //cout <<"-----------------------------------"<<endl;
    
    }
    break;
    

    Nun kommt beim Compilieren folgender Fehler... 'good' has not benn declared...

    Was kann das sein?



  • Hast du am Annfang den Namespace richtig deklariert?

    Wenn nicht...

    // Includes
    ...
    // Namespaces
    using namespace std;
    ...
    
    //Programm
    ...
    

    Gruss
    Tobi



  • Joa, hab ich alles richtig... der rest von dem Programm funzt ja auch richtig...



  • So, jetzt kommt die meldung 'good' is not a type

    Weiss jemand woran das liegt?



  • Hab jetzt alles überarbeitet, funzt jetzt auch eigentlich.

    Vielleicht hat ja jemand noch verbesserungsvorschläge

    case 2:
    {
    char buffer[3];
    anzahl=0;
    reihen=10;
    fstream lesen ("tippreihen.txt");
    if ( lesen.is_open()) //Datei öffnen
    {
    for (int i=0;i<10;i++) //Schleife für reihen
    {
    for (int k=0;k<6;k++) //Schleife für Tipps 1-6
    {
    lesen.getline (buffer,3); //Zeile in buffer speichern
    const char* temp = buffer; //buffer in temp spaichern
    tip[k][i] = atof(temp); //temp als double in tip speichern
    if (tip[k][i]==0) //Anfang Ende der Tipps herrausfinden
    {
    i=9;
    k=5;
    reihen=anzahl/6; //reihen festlegen
    }
    else
    anzahl++; //Ende Ende der Tipps herrausfinden
    }
    }
    lesen.close(); //Datei schließen
    }
    eingabetip=1; //Wert wichtig für unmögliche Menüeingaben
    cout<<"Tipps wurden aus Datei 'tippreihen.txt' gelesen!\n\n";
    cout<<"Bitte Taste druecken...";
    getch();
    }
    break;
    


  • Henus schrieb:

    Hab jetzt alles überarbeitet, funzt jetzt auch eigentlich.

    Vielleicht hat ja jemand noch verbesserungsvorschläge

    Einrücken


Anmelden zum Antworten