Array austauschen



  • Schönen Feiertag euch.

    Ich hätte da eine Anfängerfrage bezüglich der Arrays. Die Aufgabe lautet wie folgt:

    http://fs5.directupload.net/images/170615/fi2dysrv.jpg

    Die Ermittlung der Größe ist einfach

    sizeof(fibonacci)/siezeof(int)
    

    Doch was ist mit Austausche gemeint?
    Soll der Inhalt von lucas zu fibonacci?
    Oder umgekehrt? Oder sollen beide Arrays untereinander ausgetauscht werden?

    Wenn ich fibonaccis Inhalt zu lucas bringe, kann das ja nicht funktioneren, denn fibonacci ist größer als lucas.
    Bliebe also nur noch lucas zu ficonacci, aber auch das ist irgendwie seltsam. Wofür brauche ich dann die Größe von fibonacci? Hier bräuchte man dann eher die Größe von lucas.

    Arrays lassen sich mit Schleifen austauschen, keine Frage.
    Mir geht es eher um die Aufgabenstellung.



  • Es soll nichts getauscht werden, die Aufgabenstellung besagt einfach nur, dass die Funktion für alle Arrays funktionieren soll, auch wenn es plötzlich lucas heißt und weniger/mehr Elemente hat.



  • Die Aufgabe ist ziemlich schwach. Deswegen auch das Rumgeier in der Formulierung.
    Du kann doch vorher sehen, wieviele Elemente da sind?!

    Wenn Du gleichen Code mehrfach haben willst dann benutzt Du in der Regel eine Funktion. Leider funktioniert das bei der Größenbestimmung von Arrays nur wenig intuitiv(*). Siehe (2)

    Ein Ausweg wäre ein Präprozessormakro - das hast Du ja schon formuliert. Auch nicht das Gelbe vom Ei. (1)

    #include <iostream>
    
    // 1
    #define ARR_SIZE(X) sizeof(X)/sizeof((X)[0])
    
    // 2
    template<class T, size_t N>
    size_t arr_size(const T(&)[N]){ return N; }
    
    int main() {
      int fibonacci[]={1,1,2,3,5,8,13,21,34,55}; //10
      int lucas[]={2,1,3,4,7,11,18}; // 7
      std::cout << ARR_SIZE(fibonacci) << ' ' << ARR_SIZE(lucas) << '\n'
                << arr_size(fibonacci) << ' ' << arr_size(lucas) << '\n';
    }
    

    😉 Ein Array T[N] zerfällt bei der Übergabe an eine Funktion in einen T* Parameter.


  • Mod

    Furble Wurble schrieb:

    😉 Ein Array T[N] zerfällt bei der Übergabe an eine Funktion in einen T* Parameter.

    , außer wenn es das nicht tut. FTFY


Anmelden zum Antworten