Globales array



  • Hallo,

    habe ein folgendes problem.

    Wollte das Programm etwas schöner gestalten und alle Funktionen in ein andere .cpp-File schreiben.

    Doch ich habe ein Problem:
    In Hauptprogramm.cpp:
    gibts ein Array y[10] er wird dort initialieisert (double y[10])
    Jetzt rüfe ich eine funktion (zB. f(x)) auf, welche in funktionen.cpp geschrieben ist

    In funktionen.cpp:
    Der Wert x wird übergeben an void f(double x) und dort möchte ich, dass das Array mit Werten gefüllt wird. Diese Funktionen hat eigentlich keinen Rückgabewert, da dieses globale Array einfach füllt.

    Doch das geht leider nicht, wenn ich in Hauptprogramm.cpp die Werte wieder anzeigen will, sind sie 0, also nicht das was ich reinschreibe.

    Kann mir jemand helfen?



  • Hallo

    übergib das Array als Parameter der Funktion, am besten als Referenz.
    Globale variablen sind meistens schlecht, also ist die Umstellung auf jedenfall eine Verbesserung.

    bis bald
    akari



  • Vielen dank ich probier das mal aus, mal schauen ob ich das hinkriege... sonst melde ich mich wieder



  • Sorry kann mir jemand helfen wie ganau das geht?

    in functions.cpp geht so etwas nicht

    void f(double x, float& array[])
    {
    array[i]=12;
    }

    es kommt eine Fehlermeldung und ich kanns nicht einmal komplieren.

    Könnte jemand ein kleines Beispiel machen?



  • Hallo

    es kommt eine Fehlermeldung

    Du solltest immer Fehlermeldungen und -beschreibungen mit posten.

    Du kannst Array nicht ohne Dimensionsangabe übergeben. Wenn du ein dynamishes Array übergeben willst, must du entweder einen Pointer mitsamt Größenangabe verwenden

    void f(double x, float* array, int array size)
    {
    array[i]=12;
    } 
    
    // Beispielanwendung
    float* array = new float[20];
    f(12.0, array, 20);
    

    , oder besser gleich der echte C++ Weg : einen Container wie std::vector benutzen.

    #include <vector>
    void f(double x, std::vector<float>& array)
    {
      array[i] = 12;
    }
    
    std::vector<float> array;
    array.push_back(1234.45); // Einzelne Werte in Array ein tragen
    f(12.4, array);
    

    Mehr zum Thema STL-Container findest du im C++ Forum, in der C++ FAQ und in den Magazinartikeln hier im Forum.

    bis bald
    akari



  • Super!

    Alles läuft jetzt prima!

    Vielen vielen Dank!



  • Ich komme wieder mit einem Problem, welches auch zum Thema gehört..

    Würde gerne das Array 2-Dimensional machen. Doch jetzt gibts das Problem mit der Grösseneingabe als Paramter, jetzt gebe ich ja ein int ein, welches nur 1-Dimensional ist.

    akari, kannst Du mir da wieder etwas Hilfe leisten, wäre superfroh.

    Ich verwende die "old-Skool" Varianta (die erste, welche du als Beispiel gezeigt hast) und das möchte jetzt auf 2-Dimension erweitern

    Vielen Dank im voraus


Anmelden zum Antworten