1

C++ Lotto

Frage von Domii21 Domii21

Hallo leute ich habe eine Frage zu C++ ich muss ein Programm machen um ein Lotto spiel auszuwerten doch ich bekomms nicht in die zahlen zu vergleichen, bei mir siehts so aus..

#include <cstdlib>
#include <iostream>

using namespace std;
    int a[5]; // Lottozahlen
    int i, l, j;
     int tip[5];      
int main(int argc, char *argv[])
{
    cin >> tip[0] >> tip[1] >> tip[2] >> tip[3] >> tip[4] >> tip[5];
    a[5] = rand()%49;
    for(l=0; l<5; l++)
    {
     cout<< a[0] << a[1] << a[2] << a[3] << a[4] << a[5] << a[6] << endl; 
    }

     for (i=0; i<5; i++)
    {    
      if(a[i]==tip[i+1]);
      {
       cout<< tip[i];
      }    
    }


    system("PAUSE");
    return EXIT_SUCCESS;
}

kann mir vllt einer helfen? ach und diese &gt bzw &lt skleiner als bzw größer als..

Fragen zu gleichen Themen finden

Antworten (5)

  • 1
    Antwort von CaroAs CaroAs

    Du deklarierst nur 5 Tips und 5 Lottozahlen von Index 0 bis 4. Außerdem ziehst Du nur eine einzige Lottozahl, wo sind die anderen? Und Du gibst 5 mal dieselben 7 nichtinitialisierten Inhalte des Arrays a aus.

    Kleiner Tip: Sortiere Dein Mini-Array der Tips und Finde die gezogene Lottozahl per binärer Suche bzw. brich die binäre Suche ab bei nichtvorhanden.

  • 0
    Antwort von user1074 user1074

    Also erst mal sieht deine neue Version viel besser aus. 0en vermeidest du, indem du %49 + 1 nimmst .... 549 ergibt ja 0-48, d.h. +1 ergibt 1..49

  • 0
    Antwort von Domii21 Domii21
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;      
    int main(int argc, char *argv[])
    {
        int Lotto[5]; // Lottozahlen
        int i, j, z;
        int tip[5];
        int richtige;
    
        richtige=0;
    
    
        cin >> tip[0] >> tip[1] >> tip[2] >> tip[3] >> tip[4] >> tip[5];
        Lotto[5] = srand()%49;
        for(z=0;z<5;z++)
        {
         if(tip[z]>49)
         {
         cout << "Falsche eingabe!!!";
         system("PAUSE");            
         return EXIT_SUCCESS;
         }
        }
    
       for(i=0; i<=5; i++)
       {
        for(j=0;j<=5;j++)
        {
         if(tip[i]==Lotto[j])
         {
          richtige=richtige+1;
          cout << Lotto[j];
         }              
        }         
       }
    cout << Lotto[0];
    
    cout<< "sie haben: "<< richtige<<" richtige!";
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Habs jetzt soo, nur jetzt ist mein Problem das das rand()% auch nullen ausgibt und immer nur das gleiche wie kann man das ändern?

  • 0
    Antwort von unnex unnex

    hab dir dein script auf deine wuensche zugeschnitten:

    http://pastebin.com/GyG5Fy0P

  • 0
    Antwort von LiLiwantsGF LiLiwantsGF

    Was meinst du mit Zahlen vergleichen?

    Du willst ja mit "Tippen" spielen, so verstehe ich deinen Code jedenfalls.

    Das heißt du brauchst ein Array für die eingelesenen Zahlen (tip) und eins für die Lottozahlen (heißt a - solltest du wegen der Lesbarkeit ändern). Und zB eine Zählervariable für "richtige"

    Dann vergleichst du mit zB

    int richtige = 0;
    
     for (i=0; i<5; i++)
    {    
      if(a[i]==tip[i]);
      {
       richtige++;
      }    
    }
    cout<< richtige;
    

    Für dein allgemeines Vorgehen: weniger von den Berechnungen ausspucken. Sauberer ist es, erst Alles zu berechnen, dann zu formatieren und am Scvhkluss auszugeben.

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.