Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26
  1. #1
    Erfahrenes Mitglied Eingespielt Avatar von TheRacer
    Registriert seit
    12.10.2006
    Beiträge
    322
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    2 (100%)

    Standard Probleme mit C++ Programmierung

    Hi,
    kennt sich einer von euch ganz zufällig mit C++ Programmierung aus.
    Bin grad am programmieren und habe immer den gleichen Problem.

    Gruß TheRacer

  2. #2
    Erfahrenes Mitglied Daddel König Avatar von oldzitterhand
    Registriert seit
    29.11.2006
    Beiträge
    1.029
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    3 (100%)
    Gamer IDs

    Gamertag: oldzitterhand

    Standard

    Ist nicht gerade meine Stärke, aber versuch's mal...

  3. #3
    Erfahrenes Mitglied Eingespielt Avatar von TheRacer
    Registriert seit
    12.10.2006
    Beiträge
    322
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    2 (100%)

    Standard

    also.
    Ich muss ich "Lottospiel" generieren.
    Also 7 Zufallszahlen ziehen. (Superzahl).
    Dann darf der Benutzer 7 Zahlen eingeben.
    Danach müssen die Zahlen verglichen werden.
    Natürlich mir so wenig Aufwand wie möglich.
    sonst bräuchte ich 36 "if-schleifen".

    Das ganz geht über Arrays. Bin grad am versuchen ob ich gleich die beiden Arrays mit einander vergleichen kann.

    Das ist der Code bisher:

    #include <iostream>
    #include <cstdlib>

    using namespace std;

    int main()
    {
    int Zufall[6];
    int i;
    int Tipp[6];
    int e;

    for(i=0; i<=6; i++)
    {
    Zufall[i]=rand()%49;
    //cout << Zufall[i] << endl;
    }

    for (e=1; e<=7; e++)
    {
    cout << "Bitte geben die ihre " << e << ".e Zahl ein:\t";
    cin >> Tipp[e-1];
    }


    fflush(stdin);
    getchar();
    return 0;
    }


    Wäre nett wenn du da helfen könntest wie ich die vergleichen kann und dann aufgeben kann das der Benutzer 3 Richtiger oder so hat.

    Gruß TheRacer

  4. #4
    Erfahrenes Mitglied Daddel König Avatar von Mard994
    Registriert seit
    22.12.2006
    Beiträge
    759
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    5 (100%)
    Gamer IDs

    Gamertag: Mard994

    Standard

    Hab mal bissl im inet gesucht und bin auf das hier gestoßen:



    # include <iostream.h>
    # include <math.h>
    # include <conio.h>
    # include <stdlib.h>
    # include <time.h>
    //------------------------------------------------------------------------------

    //Dekleration
    void main (void)
    {

    int zahl [7];
    randomize();
    int CountArray [49];
    int stat[50];

    int ziehungen=0;
    for (int i=0; i<50; i++) stat[i]=0;
    int max;
    int min;
    do
    {

    ziehungen++ ;
    for(int i = 0; i<7; i++)
    {zahl[i]= rand()I+1;

    for ( int j=0;j<i;j++)
    {
    if(zahl[i]==zahl[j])
    {//gleich Zahl
    i--;
    }
    }
    }
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"*********Super Lotto*******"<<endl;
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"----------------------------"<<endl;
    cout<<"-------- ZIEHUNG: "<<ziehungen<<"---------"<<endl;
    ziehungen+1;
    cout<<"----------------------------"<<endl;
    for(int i = 0;i<6;i++){ CountArray[zahl[i]-1]++;
    stat [zahl[i]]++;
    cout<<(i+1)<<" Zufalszahl ist: "<<zahl[i]<<" "<<endl;}
    cout<<"----------------------------"<<endl;
    cout<<"Zusatzzahl= "<<zahl[6]<<endl;
    cout<<"----------------------------"<<endl;
    cout<<"Programm wiederholen?"<<endl<<endl;
    cout<<""<<endl;
    cout<<endl;
    cout<<endl;
    } while (getch()!= 'n');
    for (int i=1;i<50;i++)
    {cout <<i<<"=>" << stat[i]<<endl;

    getch();

    }
    getch();
    }


    weiss aber nicht obs geht... wie gesagt ist nicht von mir^^

  5. #5
    Erfahrenes Mitglied Daddel König Avatar von oldzitterhand
    Registriert seit
    29.11.2006
    Beiträge
    1.029
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    3 (100%)
    Gamer IDs

    Gamertag: oldzitterhand

    Standard

    Als erstes: Deine Arrays sind zu klein! Die Zahl in der eckigen Klammer bei der Deklaration muß 7 sein und nicht 6. Läuft Dein Code? Wahrscheinlich nicht, oder? Ich würde einen Programmabbruch beim Füllen des Zufallszahlen-Arrays erwarten.

    Ich schreibe Dir jetzt mal nur den Weg auf, ohne den kompletten Code:

    Wenn Du das Array mit den Zufallszahlen hast und das Array mit den Zahlen des Users, dann könnte man mit zwei FOR-Schleifen durch die Arrays gehen:

    Code:
    int Richtige = 0;
    int i = 0;
    int e = 0;
    
    for(i=0; i<7; i++)
    {
      for(e=0; e<7; e++)
      {
         if( Zufall[i] == Tipp[e] )
         {
            Richtige++;
         }
      }
    }
    
    cout << "Sie haben " << Richtige << " Richtige!" << endl;
    Eigentlich müßte man während der Eingabe aber noch sicher stellen, daß der User nicht zweimal die selbe Zahl eingibt (nach jeder eingegben Zahl das Tipp-Array durchsuchen) und die Zufallszahlengenerator darf natürlich auch nicht (zufällig) zweimal die selbe Zahl genieren und ins Array schreiben.

    @Mard994: Dein Code simmuliert nur die Ziehung an sich.

  6. #6
    Erfahrenes Mitglied Eingespielt Avatar von TheRacer
    Registriert seit
    12.10.2006
    Beiträge
    322
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    2 (100%)

    Standard

    Danke für die Mard.
    Das Problem ist das ich morgen eine Arbeit schreibe, wo wir gesagt bekommen haben das Lotto dran kommt und wir das mit Array machen müssen. Mittlerweile hbae ich auch gemerkt das man einen Umweg gehen muss um Arrays mit einander zu vergleichen. Das geht eigentlich garnicht.

    Ich muss den Quellcode halt auch verstehen. Sonst kann ich es morgen sowieso nicht umsetzen.

    Bin jetzt soweit:
    #include <iostream>
    #include <cstdlib>

    using namespace std;

    int main()
    {
    int Zufall[6];
    int i;
    int Tipp[6];
    int e;
    int w;

    for(i=0; i<=6; i++)
    {
    Zufall[i]=rand()%49;
    cout << Zufall[i] << endl;
    }

    for (e=1; e<=7; e++)
    {
    cout << "Bitte geben die ihre " << e << ". Zahl ein:\t";
    cin >> Tipp[e-1];
    }

    fflush(stdin);
    getchar();
    return 0;
    }


    Jetzt fehlt nur noch das Vergleichen. Das bekomme ich aber nicht hin. Habe einem Programmierer aus der Firma wo mein Dad schafft das Ding auch mal gemailt. Vielleicht bekommt der was verständliches raus.
    Wobei ich es bezweifle.
    Das versteht man normal nicht was die programmieren, wo schon 10Jahre dabei sind.

    Gruß TheRacer

    Edit sagt: Erleuchtung. Vielen danke Oldzitterhand. So verstehe ich das.

    Edit hat noch was zu sagen: Das Array mit [6] reicht. Ich brauche ja nur 7 Zahlen. Da das Array ja bei 0 anfängt passt das.

    Hab das jetzt alles eingebunden. Den Treffer muss ich auch noch deklarieren und mit 0 initialisieren.


    Grad getestet. Geht NICHT.
    Es kommt eine Fehlermeldung beim Vergleichen der Arrays:
    "if( Zufall[i] == Tipp[e] )"
    Da kommt es nicht weider.


    Diese Fehlermeldung kommt:
    Unbehandelte Ausnahme bei 0x0041435d in Lottoaufgabe_2.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00133000.


    Hast du eine Idee was da falsch ist zitterhand???
    brauche ich noch eine zusätzliche include Datei ?

  7. #7
    Erfahrenes Mitglied Daddel König Avatar von oldzitterhand
    Registriert seit
    29.11.2006
    Beiträge
    1.029
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    3 (100%)
    Gamer IDs

    Gamertag: oldzitterhand

    Standard

    Ähm... siehe einen Post über Deinem

    *edit*

    Achja, noch was... ich glaube Du generierst die Zufallszahlen nicht richtig... das müßte eher

    Code:
     Zufall[i] = 1+(int) (10.0*rand()/(49+1.0));
    heißen, anstatt

    Code:
     Zufall[i]=rand()%49;
    Sonst generierst Du Zahlen zwischen 0 und 48.

    Quelle: In Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 1992 (2nd ed., p. 277))

  8. #8
    Erfahrenes Mitglied Eingespielt Avatar von TheRacer
    Registriert seit
    12.10.2006
    Beiträge
    322
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    2 (100%)

    Standard

    Das Problem ist trotzdem nicht weg:

    Grad getestet. Geht NICHT.
    Es kommt eine Fehlermeldung beim Vergleichen der Arrays:
    "if( Zufall[i] == Tipp[e] )"
    Da kommt es nicht weider.

    Diese Fehlermeldung kommt:
    Unbehandelte Ausnahme bei 0x0041435d in Lottoaufgabe_2.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00133000.

  9. #9
    Erfahrenes Mitglied Daddel König Avatar von oldzitterhand
    Registriert seit
    29.11.2006
    Beiträge
    1.029
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    3 (100%)
    Gamer IDs

    Gamertag: oldzitterhand

    Standard

    Zitat Zitat von TheRacer
    Edit hat noch was zu sagen: Das Array mit [6] reicht. Ich brauche ja nur 7 Zahlen. Da das Array ja bei 0 anfängt passt das.
    Eben nicht. Du verwechselst da was. Die Indexierung des Array (also der Zugriff) fängt bei 0 an und endet bei Arraygröße-1. Um dem Array am Anfang aber zu sagen wie große es sein soll, mußt Du es schon mit der wirklichen Größe, die Du haben möchtest, anlegen.

    Ich vermute daher kommt auch

    Zitat Zitat von TheRacer
    Diese Fehlermeldung kommt:
    Unbehandelte Ausnahme bei 0x0041435d in Lottoaufgabe_2.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00133000.
    Bitte auch meine Anmerkungen im vorherigen Post beachten.

  10. #10
    Erfahrenes Mitglied Eingespielt Avatar von TheRacer
    Registriert seit
    12.10.2006
    Beiträge
    322
    Beigetretene Turniere
    0
    Turnier Siege
    0
    Marktplatzbewertung
    2 (100%)

    Standard

    habe das jetzt geändert.

    Quellcode:

    #include <iostream>
    #include <cstdlib>

    using namespace std;

    int main()
    {
    int Richtige = 0;
    int Zufall[7];
    int Tipp[7];
    int e;
    int w = 0;
    int i;
    int h = 0;

    for(i=0; i<7; i++)
    {
    Zufall[i]=rand()%50;
    cout << Zufall[i] << endl;
    }

    for (e=1; e<=7; e++)
    {
    cout << "Bitte geben die ihre " << e << ". Zahl ein:\t";
    cin >> Tipp[e-1];
    }

    for(w=0; w<7; i++)
    {
    for(h=0; h<7; h++)
    {
    if( Zufall[i] == Tipp[e] )
    {
    Richtige++;
    }
    }
    }

    cout << "Sie haben " << Richtige << " Richtige!" << endl;

    fflush(stdin);
    getchar();
    return 0;
    }


    Ich habe inm den Schleifen immer "<=" genommen. Deshalb hätte es doch auch mit 6 funktionieren können.
    Egal. Jetzt habe ich 7.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •