Variablennamen zusammenfügen ?



  • Nabend zusammen,

    ich stehe grade vor dem Problem, dass ich mehrere getrennte Namen von Variablen zusammenfügen muss.

    Hier ein Beispiel

    #include <iostream>
    using namespace std;
    
    // Folgende Variablen sollen nachher ausgegeben werden
    int Variable1 = 5;
    int Variable2 = 3;
    int Variable3 = 2;
    
    int main(){
    
    // In folgender Schleife sollen sie zusammengefügt und ausgegeben werden
    
        for(int i = 1; i <= 3; i++){
            cout << Variable + i << endl;
        }
    
    // Dass mit Variable + i ist nur provisorisch.
    // Hier liegt das Problem. Ich erhalte den error `Variable' was not declared in this scope
    // Wie füge ich Variable und i zusammen ? Am Ende soll 5 3 und 2 ausgegeben werden.
    
        return 0;
    }
    

    Wie kriege ich die for-Schleife so hin, dass sie mir die Werte von Variable1, Variable2 und Variable3 ausgibt ?

    Danke für eure Mühen.
    Lg
    SalamiDealer



  • Das geht nicht. Dafür gibt es z.B. Arrays:

    int main() {
      int variable{3} = { 5, 3, 2 };
      for (int i = 0; i < 3; ++i)
        cout << variable{i] << endl;
    }
    


  • Achso alles klar, danke.

    Wie wird das denn gemacht, wenn ich sowas hier habe:

    Artikel1.Preis
    Artikel2.Preis
    Artikel3.Preis
    ..

    Habe jetzt ein bisschen mit arrays rumprobiert, aber mir ist da nichts gelungen.


  • Mod

    SalamiDealer schrieb:

    Achso alles klar, danke.

    Wie wird das denn gemacht, wenn ich sowas hier habe:

    Artikel1.Preis
    Artikel2.Preis
    Artikel3.Preis
    ..

    Habe jetzt ein bisschen mit arrays rumprobiert, aber mir ist da nichts gelungen.

    Daraus macht man dann, wenn man mit arrays arbeiten möchte, sowas:

    Artikel[1].Preis
    Artikel[2].Preis
    Artikel[3].Preis
    

    War es das, was du wissen wolltest?



  • Hi,

    wenn ich das so mache, erhalte ich eine Fehlermeldung.
    request for member `Name' in `Artikel[i]', which is of non-class type `char'

    char Artikel[4] = {1, 2, 3, 4};
    
    for(int i = 1; i < 4; i++){
    
        cout << "Name:       " << Artikel[i].Name << endl;
        cout << "Preis:      " << Artikel[i].Preis << endl;
        cout << "Art:        " << Artikel[i].Art << endl;
        cout << "Verfuegbar: " << Artikel[i].Verfuegbar << endl;
    
    }
    


  • das mit dem "Name", "Preis", etc kann so nicht funktionieren.

    woher soll dein

    char Artikel[4] = {1, 2, 3, 4};
    

    irgendwas von Name, Preis, etc wissen?!?

    Zudem sollte man char Datentypen nicht mit zahlen (int) füllen...
    Das was du suchst nennt sich struct

    P.S. das ist nicht zufällig eine Hausaufgabe?!? 😉



  • Grundsätzlich: Kenntnisse zu den Datentypen nacharbeiten!

    char dient dazu genau ein Zeichen zu speichern.

    char Artikel[4] = {1, 2, 3, 4};
    
    Reserviere ein Array mit dem Namen 'Artikel', der Länge 4,
    des Typs char und initialisiere dieses mit den Werten 1, 2, 3, 4.
    

    Ich denke nicht, dass es das ist, was du damit ausdrücken willst.

    Was du in deinem Anwendungsfall suchst, ist eine Klasse (structs sind Klassen):

    struct Artikel
    {
        std::string name;
        long int preis;
        std::string art;
        bool verfuegbar;
    };
    

    Diese dann angelegt als Array (Datenfeld):

    const size_t maxArtikel = 10u;
    Array artikel[maxArtikel];
    // ...
    artikel[2u].name = "FooBar"
    // ...
    std::cout << artikel[2u].name << std::endl;
    

    Abschließend griffe ich in solchen Fällen doch eher zu std::vector.

    Grüße... Heiko

    PS. Bei Fragen: www.ask.de



  • Hi und danke ^^
    Ne mit Hausaufgaben hab ich schon lange nicht mehr am Hut 😉
    Das was ich da gezeigt habe, ist auch nur ein ausschnitt, und ist zur Übung. Habe grade structs durchgenommen.

    Hier der gesammte Code

    class Artikel{
    
        public:
    
        float Preis;
        string Name;
        string Art; 
        int Verfuegbar; 
    
        Artikel(string aName, float aPreis, string aArt, int aVerfuegbar);
        ~Artikel();
    
    Artikel::Artikel(string aName, float aPreis, string aArt, int aVerfuegbar){
    
        Name = aName;
        Preis = aPreis;
        Art = aArt;
        Verfuegbar = aVerfuegbar;
    
    }
    
    Artikel::~Artikel(){
    
    }
    
    int main(){
    
        Artikel Artikel1("Artikel1", 49.99, "Buch", 1);
        Artikel Artikel2("Artikel2", 9.99,  "DVD", 1);
        Artikel Artikel3("Artikel3", 19.99, "Spiel", 1);
        Artikel Artikel4("Artikel4", 29.99, "DVD", 0);
    
        int Artikel[4] = {1, 2, 3, 4};
    
        for(int i = 1; i < 4; i++){
    
            cout << "Name:       " << Artikel[i].Name << endl;
            cout << "Preis:      " << Artikel[i].Preis << endl;
            cout << "Art:        " << Artikel[i].Art << endl;
            cout << "Verfuegbar: " << Artikel[i].Verfuegbar << endl << endl;
    
        }
    
    }
    


  • 1. Benutze statt den "code" die "cpp"-Tags
    2. Lies auch was wir schreiben

    class Artikel{
    //...
        // Wir benötigen in diesem Fall einen Standardkonstruktor (kein parameter,
        // oder alles Defaultinitialisiert).
        Artikel(
          string const & Name = "", // Objekte sollte man in der Regel als konstante
                                    // Referenz übergeben.
          float Preis = 0.0,
          string const & Art = "",
          int Verfuegbar = 0);
    //...
    
    Artikel::Artikel(
      string const & Name,
      float Preis,
      string const & Art,
      int Verfuegbar)
    : Name(Name),     // Initialisierungsliste ist besser als nachträgliche
      Preis(Preis),   //  Zuweisung
      Art(Art),
      Verfuegbar(Verfuegbar)
    {
    }
    
    //...
    
    int main()
    {
        Artikel artikel[4];
    
        artikel[0].Name      = "Artikel1";
        artikel[0].Preis     = 49.99;
        artikel[0].Art       = "Buch";
        artikel[0].Verfuegbar= 1;
        // dies nun auch für artikel[1], artikel[2] und artikel[3]
    
        // Arrays beginnen mit Index 0!!!
        for(int i=0; i<4; ++i)
        {
            cout << "Name:       " << artikel[i].Name << endl;
            cout << "Preis:      " << artikel[i].Preis << endl;
            cout << "Art:        " << artikel[i].Art << endl;
            cout << "Verfuegbar: " << artikel[i].Verfuegbar << endl << endl;
    
        }
    }
    


  • Alles klar, danke 😉


Log in to reply