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, 17:02 #1
- Registriert seit
- 12.10.2006
- Beiträge
- 322
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 2 (100%)
Probleme mit C++ Programmierung
-
18.06.2008, 17:32 #2
- 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, 18:31 #3
- 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, 20:36 #4
- 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, 21:37 #5
- 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:
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, 21:41 #6
- 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, 21:43 #7
- 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
Code:Zufall[i] = 1+(int) (10.0*rand()/(49+1.0));
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, 21:59 #8
- 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, 22:06 #9
- Registriert seit
- 29.11.2006
- Beiträge
- 1.029
- Beigetretene Turniere
- 0
- Turnier Siege
- 0
- Marktplatzbewertung
- 3 (100%)
Zitat von TheRacer
Ich vermute daher kommt auch
Zitat von TheRacer
-
18.06.2008, 22:11 #10
- 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.