Lotto Programm erstellen, HILFE!!!



  • 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