Vergleich von einem Array



  • Moin!

    In meinem C Programm habe ich ein Array (int MeinArray[10]).

    Jetzt wollte ich gerne wissen, wie der Code für folgende "Funktion" bzw Vergleich aussieht:

    Es soll überprüft werden, ob die Zahl, die ein davor im Feld steht um X kleiner/größer/gleich ist.

    Z.B.

    if(MeinArray[0]==MeinArray[1])
    

    wenn beides gleich sein soll. Bloß wie soll ich den Code schreiben, wenn ich nicht für jeden Fall immer copy&paste machen möchte bzw keine meterlange Zeile? (-> rekursiv?)

    Grüße und Vielen Dank!

    Freddy Krüger



  • freddy krüger schrieb:

    In meinem C Programm habe ich ein Array (int MeinArray[10]).

    C? dann bist du im falschen forum.

    freddy krüger schrieb:

    Es soll überprüft werden, ob die Zahl, die ein davor im Feld steht um X kleiner/größer/gleich ist.

    sorry, das verstehe ich nicht. formuliere es bitte grammatisch.



  • Ok stimt 🤡

    Kann aber auch in C++ geschrieben werden.

    Das Programm bzw die Funktion soll die int Werte von einem Array vergleichen.

    Z.B ob diese stetig um +1 steigt.



  • int array[10];
    // array mit Werten füllen
    for(int i = 0; i < 9; ++i)
       if(array[i] == array[i+1])
          cout << "array[" << i << "] ist gleich array[" << i+1 << "]\n";
    


  • dann berechne die differenzen der folge:

    (kurz hingewurstelter code, nicht auf den stil achten)

    #include <iostream>
    #include <vector>
    #include <iterator>
    #include <cstddef>
    #include <algorithm>
    
    template<typename InputIteratorType, typename OutputIteratorType>
    void CalcDifferences(InputIteratorType First, InputIteratorType Last, OutputIteratorType Target)
    {
    	if(First != Last)
    	{
    		for(InputIteratorType Next = First; First != Last; ++First)
    		{
    			Target = *++Next - *First;
    		}
    	}
    }
    
    int main()
    {
    	enum
    	{
    		ArraySize = 10
    	};
    	int Array[ArraySize];
    
    	for(std::size_t i = 0; i < ArraySize; ++i)
    	{
    		Array[i] = i + 1;
    	}
    
    	typedef std::vector<int> DifferenceContainer;
    	DifferenceContainer Differences;
    	CalcDifferences(Array, Array + ArraySize, std::back_insert_iterator<DifferenceContainer>(Differences));
    
    	if(std::find(Array + 1, Array + ArraySize, Array[0]) == Array + ArraySize)
    	{
    		std::cout << "Die Differenz der Elemente ist immer " << Array[0];
    	}
    }
    

    http://ideone.com/F8QJcr



  • Danke!

    Und wenn ich wissen möchte, ob die Werte in meinem Array immer um 1 steigen (Array[1],Array[2],Array[3],...) muss ich lediglich folgendes tun:

    1. Vergleich: -> korrekt
    2. Vergleich: -> korrekt
    3. Vergleich: -> korrekt
    4. Vergleich: -> korrekt

    (Schematische Darstellung)

    Die Ergebnisse der Vergleiche in einer Variable speichern (1=alle korrekt, 0= ale nicht korrekt).

    War das schon die Lösung des Problems? (Abfrage der Vergleiche in einer Schleife)



  • Danke für dein Beispiel asfdlol

    Kannst du mir den Code erklären?

    Ich komme mit dem Cide ansich nicht weiter...

    (Mach dir um den Stil keine Sorge, ist Nebensache für mich)



  • freddy krüger schrieb:

    Danke für dein Beispiel asfdlol

    Kannst du mir den Code erklären?

    Ich komme mit dem Cide ansich nicht weiter...

    (Mach dir um den Stil keine Sorge, ist Nebensache für mich)

    ich rechne die differenzen der elemente im array aus und schaue dann ob alle differenzen gleich sind (sie werden zwischengespeichert in meinem listing, vielleicht brauchst du das gar nicht, je nach dem was du vor hast).



  • asfdlol schrieb:

    freddy krüger schrieb:

    Danke für dein Beispiel asfdlol

    Kannst du mir den Code erklären?

    Ich komme mit dem Cide ansich nicht weiter...

    (Mach dir um den Stil keine Sorge, ist Nebensache für mich)

    ich rechne die differenzen der elemente im array aus und schaue dann ob alle differenzen gleich sind (sie werden zwischengespeichert in meinem listing, vielleicht brauchst du das gar nicht, je nach dem was du vor hast).

    Danke für die Erklärung asfdlol

    Es reciht mir zu wissen, ob die Differenzen alle gleich sind.


Log in to reply