Lottoziehung - Alles richtig?



  • Ich habe ein kleines Lottoprogramm vollständig selbst geschrieben:

    #include<iostream>
    #include<string>
    #include<ctime>
    using namespace std;
    
    //funktion um Arrays nach gleichen Werten abzusuchen
    int gleiche( int arr1[], int arr2[] )
    {
    	//laenge des ersten arrays
    	int arr1Length = sizeof(arr1) / sizeof(int);
    	//lange des zweiten arrays
    	int arr2Length = sizeof(arr2) / sizeof(int);
    	//counter der gleichen Werte
    	int count = 0;
    
    	for( int i1 = 0; i1 < arr1Length; i1++ )
    	{
    		for( int i2 = 0; i2 < arr2Length; i2++ )
    		{
    			if( arr1[i1] == arr2[i2] )
    				count ++;
    		}
    	}
    
    	return count;
    }
    
    int main()
    {
    	int zahlen[5];
    	int tipps[5];
    	char c;
    	int richtige = 0;
    
    	srand(time(NULL));
    
    	//Lottozahlen in den Array schreiben
    	for( int i = 0; i < 5; i++ )
    		zahlen[i] = (rand() % 49)+1;
    
    	cout << "Geben sie ihre Tipps ab: " << endl;
    
    	//Die Tipps einlesen und in den Array schreiben.
    	for( int i = 0; i < 5; i++ )
    		cin	>> tipps[i];
    
    	//Die Tipps prüfen
    	richtige = gleiche( zahlen, tipps );
    
    	cout << "Deine Tipps:" << endl;
    	for( int i = 0; i < 5; i++ )
    		cout << tipps[i] << endl;
    	cout << endl << "Die gezogenen Lottozahlen:"<<endl;
    	for( int i = 0; i < 5; i++ )
    		cout << zahlen[i] << endl;
    
    	cout << endl << "Du hast also "<< richtige << " richtige!";
    
    	cin >> c;
    	return 0;
    }
    

    Nur bei gleiche() musste ich kurz überlegen, sonst war alles eigentlich ganz einfach.

    Es funktioniert soweit richtig, nur wollte ich fragen, ob es trotzdem noch etwas zu verbessern gibt.

    Hoffe, ihr findet was.

    MfG 😉



  • Ich dachte bei Lotto gibts 6 Zahlen. Die 5 kannst du als Konstante definieren, dann wäre es einfacher zu ändern.
    Wenn du zwei Zahlenarrays vergleichen willst kannst du sie vorher sortieren, dann gehts schneller, aber bei so kleinen arrays istdas egal



  • Es gibt auch 6 Zahlen.

    Ich hab jetzt nicht richtig nachgezählt...

    Aber die 0 ist doch auch eine Zahl bei Arrays...ich geh lieber mal nachzählen 😉

    EDIT: Ok, es sind nur 5 Zahlen.
    und die vergleichs funktion funktioniert auch nicht so, wie ich will 😕 Mal nachkucken.

    EDIT2: ok, sie geht...manchmal o.O

    EDIT3: Die Größe des Arrays wird nicht richtig ausgelesen. Es kommt immer 1 raus...

    Und ich muss noch prüfen, ob doppelte Werte gezogen wurden.



  • #include <iostream>
    #include <string>
    #include <ctime>
    #include <algorithm>
    
    const unsigned short count_numbers = 6;
    
    int main()
    {
    	std::wcout << L"Lotto-Ziehung V0.1" << std::endl;
    	std::srand(std::time(NULL));
    	std::wcout << L"Ihre Tipps:" << std::endl;
    
    	unsigned short arr_items[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    	std::random_shuffle(arr_items, arr_items + 9);
    
    	unsigned short right_tipps = 0;	
    	for (unsigned short number = 0; number < count_numbers; ++number)
    	{
    		std::wcout << L"Tipp 0" << (number + 1) << L": " << std::flush;
    		unsigned short tipp = 0;
    		std::wcin >> tipp;
    		if (arr_items[number] == tipp)
    			++right_tipps;
    	}
    
    	std::wcout << L"Sie haben " << right_tipps << L" Richtige!" << std::endl;
    	std::wcout << L"Es wurden folgende Zahlen gezogen: ";
    	std::copy(arr_items, arr_items + (count_numbers - 1), std::ostream_iterator<unsigned short>(std::wcout, " "));
    	std::wcout << std::endl;
    
        return 0;
    }
    

    guck dir das mal an ... so könnte man das auch machen ... du kannst ja direkt überprüfen ob der Tipp richtig ist ... und bei mir hab ich jetzt nur net kontrolliert das der Benutzer ne valide Zahl eingibt ...


Anmelden zum Antworten