Hallo, ich lerne seit zwei Tagen Programmieren und habe mich für C++ entschieden. Ich habe aktuell die Themen. Variablen, Ein-/ Ausgabe, Arrays, Funktionen, Bedingungen und Schleifen durch genommen. Um mein gelerntes anwenden zu können, habe ich mich dafür entschieden ein "Lottospiel" zu programmieren. In diesem SPiel habe ich alles verwendet, was ich bisher gelernt habe, ich weiß es ist noch nicht viel, trotzdem bin ich stolz drauf. Das SPiel geht so.
Der Spieler gibt zuerst seinen Namen ein. Dann Tippt der Spieler seine 6 Gewinnzahlen ein. Es ist für den Spieler nur möglich Zahlen von 1-49 einzugeben. Er kann keine doppelten Zahlen eingeben. Hat er die Zahlen eingeben, werden per Zufallsmechanismus 6 Zahlen aus der "Lostrommel" gezogen. Hier wird auch dafür gesorgt, dass jede Zahl nur einmal gezogen werden kann. Anschließend wird untersucht, wie Viele Übereinstimmungen vorliegen und diese angezeigt. Wie gesagt, habe ich alles was ich bisher in zwei Tagen gelernt habe zu verwenden. Schleifen Arrays und und und. Jetzt meine Frage.
Wir würde ein "PROFI" dieses Programmieren? Ich gehe mit mehreren Forschleifen die Arrays durch, um z.B. zu schauen, dass ich keine doppelten Zahlen ziehe, bzw. ob Übereinstimmungen vorhanden sind. Gibt es da für "Fortgeschrittene" bessere Möglichkeiten?
Ist es möglich, dass man in einem Array suchen kann? Ist es möglich 2 Arrays miteinander zu vergleichen und die Gemeinsamkeiten in ein weiteres Array auszugeben? Dies würde meinen Code natürlich sehr verschlanken. Obwohl ich durch meine Programmierung natürlich das in den letzen 2 Tagen gelernte verinnerlichen und anwenden konnte.
Vielen Dank für Eure Antworten, bezüglich meiner Fragen, Suchen in Arrays und Arrays vergleichen.
Anbei mein aktueller Quelltext, bitte nicht gleich komplett zerreißen, ich bin wie gesagt absoluter Anfänger und ich weiß, dass es wahrscheinlich viel besser geht, aber ich bin trotzdem sehr stolz drauf und wollte, dass es funktioniert.
Falls es noch relevant ist, ich Programmiere unter Linux
Viele Grüße
Betzi
Der Spieler gibt zuerst seinen Namen ein. Dann Tippt der Spieler seine 6 Gewinnzahlen ein. Es ist für den Spieler nur möglich Zahlen von 1-49 einzugeben. Er kann keine doppelten Zahlen eingeben. Hat er die Zahlen eingeben, werden per Zufallsmechanismus 6 Zahlen aus der "Lostrommel" gezogen. Hier wird auch dafür gesorgt, dass jede Zahl nur einmal gezogen werden kann. Anschließend wird untersucht, wie Viele Übereinstimmungen vorliegen und diese angezeigt. Wie gesagt, habe ich alles was ich bisher in zwei Tagen gelernt habe zu verwenden. Schleifen Arrays und und und. Jetzt meine Frage.
Wir würde ein "PROFI" dieses Programmieren? Ich gehe mit mehreren Forschleifen die Arrays durch, um z.B. zu schauen, dass ich keine doppelten Zahlen ziehe, bzw. ob Übereinstimmungen vorhanden sind. Gibt es da für "Fortgeschrittene" bessere Möglichkeiten?
Ist es möglich, dass man in einem Array suchen kann? Ist es möglich 2 Arrays miteinander zu vergleichen und die Gemeinsamkeiten in ein weiteres Array auszugeben? Dies würde meinen Code natürlich sehr verschlanken. Obwohl ich durch meine Programmierung natürlich das in den letzen 2 Tagen gelernte verinnerlichen und anwenden konnte.
Vielen Dank für Eure Antworten, bezüglich meiner Fragen, Suchen in Arrays und Arrays vergleichen.
Anbei mein aktueller Quelltext, bitte nicht gleich komplett zerreißen, ich bin wie gesagt absoluter Anfänger und ich weiß, dass es wahrscheinlich viel besser geht, aber ich bin trotzdem sehr stolz drauf und wollte, dass es funktioniert.
Falls es noch relevant ist, ich Programmiere unter Linux
Viele Grüße
Betzi
C++:
#include <iostream>
#include<cstdlib>
#include <unistd.h>
#include<ctype.h>
#include<string>
#include <sstream>
using namespace std;
int generiereZufallszahl(int bis){
int zufallszahl = rand() % bis +1;
return(zufallszahl);
}
void fuelleLottotrommel(int lottoTrommel[]){
for(int i=0;i<49;i++){
lottoTrommel[i]=i+1;
}
}
bool istZahlDoppelt(int gezogeneZahl, int gezogeneZahlen[]){
bool istDoppelt = false;
for(int i=0;i<6;i++){
if(gezogeneZahl == gezogeneZahlen[i]){
istDoppelt = true;
}
}
return istDoppelt;
}
void zieheZahlen(int gezogeneZahlen[]){
int gezogeneZahl =0;
for(int i = 0; i<6; i++){
do{
gezogeneZahl = generiereZufallszahl(49);
}while(istZahlDoppelt(gezogeneZahl, gezogeneZahlen));
gezogeneZahlen[i] = gezogeneZahl;
}
}
int zeigeAnzahlUebereinstimmungen(int gezogeneZahlen[], int getippteZahlen[],int trefferZahlen[]){
int treffer = 0;
for(int i = 0; i<6; i++){
for(int j=0; j<6; j++){
if(gezogeneZahlen[i]==getippteZahlen[j]){
treffer++;
trefferZahlen[i]=gezogeneZahlen[i];
}
}
}
return treffer;
}
int main()
{
srand((unsigned)time(NULL));
int lottoTrommel[49];
int meineGluecksZahlen[6] = {0,0,0,0,0,0};
int gezogeneZahlen[6] = {0,0,0,0,0,0};
int trefferZahlen[] = {0,0,0,0,0,0};
string name;
cout << "Herzlich willkommmen zur Lottoziehung." << endl;
cout << "Bitte gib Deinen Namen ein: ";
getline(cin,name);
cout << endl << name << " freut mich Dich kennenzulernen, schön das Du dein Geld hier lässt ;)" << endl;
cout << name << " bitte geb Deine 6 Lottozahlen ein!" << endl;
for(int i = 0; i < 6; i++){
int meineZahl;
string mystr;
do{
cout << name << ", bitte " << i+1 << ". Zahl eingeben:";
getline (cin,mystr);
stringstream(mystr) >> meineZahl;
if(istZahlDoppelt(meineZahl,meineGluecksZahlen) || meineZahl <1 || meineZahl>49){
cout << endl << "Nein " << name << " bitte eine Zahl zwischen 1 und 49 eingeben und jede Zahl nur einmal eingeben!!!!!" << endl;
}
}while (istZahlDoppelt(meineZahl,meineGluecksZahlen)||meineZahl <1 || meineZahl>49);
meineGluecksZahlen[i] = meineZahl;
}
fuelleLottotrommel(lottoTrommel);
cout << name << " gleich geht es los, die Lottotrommel wird gefüllt" << endl << endl;
for(int i=0;i<49;i++){
cout << lottoTrommel[i] << ",";
}
cout << endl << endl << endl << name << " Deine Glückszahlen:" << endl << "{";
for(int i = 0 ; i<6 ; i++){
cout <<meineGluecksZahlen[i] << ",";
}
cout << "}" << endl;
cout << "Starte die Lostrommel";
getchar();
zieheZahlen(gezogeneZahlen);
cout << name << " bitte warte, es geht los, die Ziehung beginnt" << endl;
usleep(3000000);
for(int i = 0 ; i<6 ; i++){
cout << name << " hier kommt Zahl " << i+1 << ":";
cout <<"";
usleep(3000000);
cout << gezogeneZahlen[i] << endl;
}
int treffer = zeigeAnzahlUebereinstimmungen(gezogeneZahlen, meineGluecksZahlen,trefferZahlen);
if(treffer > 0){
cout << endl << "Glückwunsch " << name << " Du hast " << treffer << " Treffer :)";
cout << endl << "Folgende Zahlen stimmen überein: ";
for(int i =0; i<6;i++){
if(trefferZahlen[i]!=0){
cout << " " << trefferZahlen[i] << endl;
}
}
}else{
cout << endl << "Schade " << name << " versuche es ein andermal" << endl;
}
return 0;
}