Zwei Arrays auf gleichen Wert vergleichen



  • Schönen guten Abend 🙂

    Ich habe folgende Frage an Euch... In meinem Programm soll ein Lottoschein
    Objekt erstellt werden und es wird eine Ziehung generiert.
    Meine Aufgabe ist es anhand des operator* ( fragt mich nicht der Prof will es so 😃 ) die übereinstimmenden Zahlen herauszufinden.
    In der Theorie dachte ich mir den Wert an der [i] Stelle einfach mit allen Werten des Arrays zu vergleichen.

    Hier die Funktion ( Methode )

    unsigned short CTip::operator *(CTip& other)
    {
    
    unsigned short uebereinstimmnugen = 0;
    
    	for ( int i = 0; i < m_countNumbers; i++ )
    	{
    		if ( this->m_numbers[i] == other.m_numbers[0] )
    		{
    			uebereinstimmnugen++;
    		}
    		if ( this->m_numbers[i] == other.m_numbers[1] )
    		{
    			uebereinstimmnugen++;
    		}
    		if ( this->m_numbers[i] == other.m_numbers[2] )
    		{
    			uebereinstimmnugen++;
    		}
    		if ( this->m_numbers[i] == other.m_numbers[3] )
    		{
    			uebereinstimmnugen++;
    		}
    		if ( this->m_numbers[i] == other.m_numbers[4] )
    		{
    			uebereinstimmnugen++;
    		}
    		if ( this->m_numbers[i] == other.m_numbers[5] )
    		{
    			uebereinstimmnugen++;
    		}
    
    return uebereinstimmnugen;
    	}
    

    m_countNumbers ist die Anzahl der Zahlen im Lottoschein.
    m_numbers ist der Wert des Lottoscheins im Array m_numbers[6]
    Die Funktion funktioniert nur ist sie nicht gerade die schönste 😃
    Kann man diese Schleife auch anderst generieren?

    Ich würde halt gerne die erste Zahl des Lottoscheins mit allen Werten der Ziehung vergleichen usw.... In etwa so ... das war meine Überlegung:::

    if.........
    linker Operand.m_numbers[0] == rechter Operand.m_numbers[0]
    linker Operand.m_numbers[0] == rechter Operand.m_numbers[1]
    linker Operand.m_numbers[0] == rechter Operand.m_numbers[2]
    linker Operand.m_numbers[0] == rechter Operand.m_numbers[3]
    usw....
    
    MyTip (vollstaendig): ( 3,5,10,20,25,30 )
    Ziehung(vollstaendig): ( 2,6,10,20,30,49 )
    Uebereinstimmung der Scheine: 3
    

    Vielen Dank im Voraus 🙂 😃


  • Mod

    Du kannst Schleifen ineinander verschachteln:

    for ( int i = 0; i < foo; i++ )
    {
        for ( int j = 0; j < bar; j++ ) {
            ...
        }
    }
    


  • Und wie würde es zu meinem Beispiel passen? 🙂
    Komme nicht dahinter, dass war erst meine Überlegung

    Schon mal vielen Dank 🙂



  • Wie immer komme ich doch selber auf die Lösung 😃 Aber du hast mir den richtigen Gedankensprung gegeben 😃 Ich mache einfach eine verschachtelte Schleife und Speicher den ersten Wert des Array zwischen und vergleiche sie mit allen usw .....

    Oh Mann wie logisch 😃 falls es jemand interessiert hier meine Schleife:

    unsigned short CTip::operator *(CTip& other)
    {
    
    unsigned short uebereinstimmnugen = 0;
    	unsigned short temp;
    
    	for ( int i = 0; i < m_countNumbers; i++ )
    	{
    
    		temp = this->m_numbers[i];
    
    		for ( int j = 0; j < m_countNumbers; j++ )
    		{
    	        if (temp == other.m_numbers[j])
    	        {
    	            uebereinstimmnugen++;
    	        }
    		}
    
    	}
    
    	return uebereinstimmnugen;
    }
    

    Vielen Dank für alles 🙂


Anmelden zum Antworten