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
Ergebnis 1 bis 10 von 26
-
18.06.2008, 16:02 #1Erfahrenes Mitglied Eingespielt
- Registriert seit
- 12.10.2006
- Beiträge
- 322
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 2 (100%)
Probleme mit C++ Programmierung
-
18.06.2008, 16:32 #2Erfahrenes Mitglied Daddel König
- Registriert seit
- 29.11.2006
- Beiträge
- 1.029
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 3 (100%)
Ist nicht gerade meine Stärke, aber versuch's mal...
-
18.06.2008, 17:31 #3Erfahrenes Mitglied Eingespielt
- Registriert seit
- 12.10.2006
- Beiträge
- 322
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 2 (100%)
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
-
18.06.2008, 19:36 #4Erfahrenes Mitglied Daddel König
- Registriert seit
- 22.12.2006
- Beiträge
- 759
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 5 (100%)
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^^
-
18.06.2008, 20:37 #5Erfahrenes Mitglied Daddel König
- Registriert seit
- 29.11.2006
- Beiträge
- 1.029
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 3 (100%)
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:
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.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;
@Mard994: Dein Code simmuliert nur die Ziehung an sich.
-
18.06.2008, 20:41 #6Erfahrenes Mitglied Eingespielt
- Registriert seit
- 12.10.2006
- Beiträge
- 322
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 2 (100%)
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 ?
-
18.06.2008, 20:43 #7Erfahrenes Mitglied Daddel König
- Registriert seit
- 29.11.2006
- Beiträge
- 1.029
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 3 (100%)
Ähm... siehe einen Post über Deinem

*edit*
Achja, noch was... ich glaube Du generierst die Zufallszahlen nicht richtig... das müßte eher
heißen, anstattCode:Zufall[i] = 1+(int) (10.0*rand()/(49+1.0));
Sonst generierst Du Zahlen zwischen 0 und 48.Code:Zufall[i]=rand()%49;
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))
-
18.06.2008, 20:59 #8Erfahrenes Mitglied Eingespielt
- Registriert seit
- 12.10.2006
- Beiträge
- 322
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 2 (100%)
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.
-
18.06.2008, 21:06 #9Erfahrenes Mitglied Daddel König
- Registriert seit
- 29.11.2006
- Beiträge
- 1.029
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 3 (100%)
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.
Zitat von TheRacer
Ich vermute daher kommt auch
Bitte auch meine Anmerkungen im vorherigen Post beachten.
Zitat von TheRacer
-
18.06.2008, 21:11 #10Erfahrenes Mitglied Eingespielt
- Registriert seit
- 12.10.2006
- Beiträge
- 322
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 2 (100%)
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.

Zitieren