Array in Abhängigkeit einer variable



  • Hallo Zusammen,
    habe den Programmcode in Visual Studio 2019 versucht. Leider bringt er mir immer ein Problem bei: "int array[anzahl];"
    Er unterstreicht hier das "anzahl" und sagt es müsse eine konstante sein, sei so also nicht möglich.

    Habe den Code genau so 1:1 versucht. Und habe diesen aus einem C++ Buch...
    Kann mir dabei vielleicht jemand weiterhelfen?

    MfG Julian

    #include <iostream>

    int main ()
    {
    int anzahl, i = 1;
    std::cout << "Wie viele Werte m\224chten Sie eingeben? ";
    std::cin >> anzahl;
    int array[anzahl];
    while (i <= anzahl)
    {
    std::cout << "Geben Sie den " << i <<". Wert ein: ";
    std::cin >> array[i-1];
    i++;
    }
    }



  • Das geht nicht. Die Größe eines Arrays muss ein konstanter Ausdruck sein. Was ist denn das für ein Buch?

    Sowas kann man mithilfe von std::vector machen. Dein Beispiel sähe damit so aus:

    #include <vector>
    #include <iostream>
    
    int main ()
    {
    int anzahl, i = 1;
    std::cout << "Wie viele Werte m\224chten Sie eingeben? ";
    std::cin >> anzahl;
    std::vector<int> array(anzahl);
    while (i <= anzahl)
    {
    std::cout << "Geben Sie den " << i <<". Wert ein: ";
    std::cin >> array[i-1];
    i++;
    }
    }
    

    Das ist immer noch nicht idiomatisch, ich wollte nur zeigen, dass ein std::vector wie ein dynamisches Array verwendet werden kann.



  • @JulianSch sagte in Array in Abhängigkeit einer variable:

    Und habe diesen aus einem C++ Buch...

    Bücher von Jürgen Wolf sind nutzlos.



  • (https://ideone.com/vq8kBD) Unter Umständen kompiliert es.

    War schon einmal thematisiert. Jemand wusste auch den Begriff dafür.



  • @titan99_ sagte in Array in Abhängigkeit einer variable:

    (https://ideone.com/vq8kBD) Unter Umständen kompiliert es.

    War schon einmal thematisiert. Jemand wusste auch den Begriff dafür.

    C, VLA ( Variable Length Array)

    In manchen Compilern eine C++ Erweiterung. aber nicht ISO-C++.


  • Mod

    @manni66 sagte in Array in Abhängigkeit einer variable:

    @titan99_ sagte in Array in Abhängigkeit einer variable:

    (https://ideone.com/vq8kBD) Unter Umständen kompiliert es.

    War schon einmal thematisiert. Jemand wusste auch den Begriff dafür.

    C, VLA ( Variable Length Array)

    In manchen Compilern eine C++ Erweiterung. aber nicht ISO-C++.

    Und vor allem in dieser Art und Weise höchst gefährlich. Wenn eine Nutzereingabe einen Stackoverflow verursachen kann, ist das nicht gut.



  • @manni66 Ist ein Buch von Michael Bonacina, aber in dem Fall ist das auch Mist....



  • @Bashar sagte in Array in Abhängigkeit einer variable:

    Das geht nicht. Die Größe eines Arrays muss ein konstanter Ausdruck sein. Was ist denn das für ein Buch?

    Sowas kann man mithilfe von std::vector machen. Dein Beispiel sähe damit so aus:

    #include <vector>
    #include <iostream>
    
    int main ()
    {
    int anzahl, i = 1;
    std::cout << "Wie viele Werte m\224chten Sie eingeben? ";
    std::cin >> anzahl;
    std::vector<int> array(anzahl);
    while (i <= anzahl)
    {
    std::cout << "Geben Sie den " << i <<". Wert ein: ";
    std::cin >> array[i-1];
    i++;
    }
    }
    

    Das ist immer noch nicht idiomatisch, ich wollte nur zeigen, dass ein std::vector wie ein dynamisches Array verwendet werden kann.

    @Bashar Dankeschön, ja das ist leider auf meine Idee nicht anwendbar. Dann weiß ich jetzt wenigstens dass es so nicht geht. Muss ich schauen wie ich das anderst löse.



  • @JulianSch sagte in Array in Abhängigkeit einer variable:

    @Bashar Dankeschön, ja das ist leider auf meine Idee nicht anwendbar. Dann weiß ich jetzt wenigstens dass es so nicht geht. Muss ich schauen wie ich das anderst löse.

    Was ist denn deine Idee? Wieso ist das darauf nicht anwendbar?



  • @Bashar sagte in Array in Abhängigkeit einer variable:

    @JulianSch sagte in Array in Abhängigkeit einer variable:

    @Bashar Dankeschön, ja das ist leider auf meine Idee nicht anwendbar. Dann weiß ich jetzt wenigstens dass es so nicht geht. Muss ich schauen wie ich das anderst löse.

    Was ist denn deine Idee? Wieso ist das darauf nicht anwendbar?

    Ich möchte ein Würfelspiel programmieren, und wollte so ein Array erstellen lassen in welches die Spielernamen dann eingetragen werden. Dieses sollte aber quasi mitwachsen, bzw. eben vom Spieler als Zahl vordefiniert werden.

    Dabei habe ich noch ein Problem, vielleicht hättest du dazu auch noch eine Idee? - Und zwar müsste ich dieses Array mit jedem einezelnen Platz (also Spielernamen) mit einem integer verknüpfen, welchen ich dann bei versagen hochzählen lasse und den Spieler zu gegebenem Zeitpunkt ausscheiden lasse. (Ander Lösungen sind natürlich auch willkommen 😃 )

    Danke!!!


  • Mod

    @JulianSch sagte in Array in Abhängigkeit einer variable:

    @Bashar sagte in Array in Abhängigkeit einer variable:

    @JulianSch sagte in Array in Abhängigkeit einer variable:

    @Bashar Dankeschön, ja das ist leider auf meine Idee nicht anwendbar. Dann weiß ich jetzt wenigstens dass es so nicht geht. Muss ich schauen wie ich das anderst löse.

    Was ist denn deine Idee? Wieso ist das darauf nicht anwendbar?

    Ich möchte ein Würfelspiel programmieren, und wollte so ein Array erstellen lassen in welches die Spielernamen dann eingetragen werden. Dieses sollte aber quasi mitwachsen, bzw. eben vom Spieler als Zahl vordefiniert werden.

    Dann ist Vector unendlich viel besser geeignet! Bashar hat sein Programm absichtlich "schlecht" geschrieben, um deinem Programm näher zu kommen. Eigentlich würde man das so oder ähnlich machen:

    #include <vector>
    #include <iostream>
    
    int main ()
    {
    	std::vector<int> array;
    	while (cin >> i)
    		array.push_back(i);
    }
    

    Also gar nichts vonwegen vordefinierter Anzahl und so.

    Kauf dir dringend ein gutes Buch und schmeiß das alte weg! Obiges sind Grundlagen und müssen dir besser beigebracht werden als man das in einem kurzen Forenbeitrag kann. Der Autor deines jetzigen Buches muss ja ein wahres Genie sein. Lehrbücher zu C++, Java, C#, PHP, MySQL, Python, und sogar Microcontrollerprogrammierung kann er schreiben. Oder er ist ein Stümper, der bloß das gleiche Standardlehrbuch 10x mit anderem Titel und leicht geänderter Syntax herausbringt, ohne die Sprachen wirklich zu verstehen. Was denkst du, ist der Fall?



  • @SeppJ sagte in Array in Abhängigkeit einer variable:

    Was denkst du, ist der Fall?

    Der Mann ist auf jeden Fall ein Genie! Er findet ja sogar noch Zeit, Managing Director des BMU Media Verlages zu sein ...



  • @SeppJ Ja ok, dann knall ich das Buch in die Tonne. Dachte das taugt was, hieß schließlich C++ für Einsteiger.

    Gehe direkt mal los und hol mir andere Bücher zu dem Thema. Werde mich dann mal in "vektor" lesen.

    Aber das gut hin zu bekommen wird dann wohl für mich als Leihe noch eine ganz schöne Herausforderung....

    Danke auf jeden Fall für eure Hilfe.



  • @JulianSch
    Im Forum gibt es einen Abschnitt mit Buchempfehlungen. Ich kann dir "Der C++ Programmierer" von Ulrich Breymann empfehlen.



  • @DocShoe Alles klar, Danke. Habe das Buch direkt mal organisiert. Werde es damit mal versuchen.



  • Aufpassen, da gibt's verschiedene Versionen. Kaufe dir am besten die zu C++17. Das ist die aktuellste.



  • @Zhavok Danke, hab ich gesehen. Habe die C++17. Version.


Log in to reply