Hilfe bei Array benötigt :)



  • Ah okay,danke 🙂

    Aber wie würde es denn aussehen dann wenn ich es nur mit meinen integerwerten machen würde also

    a[b,c]

    b,c sind integerwerte 🙂

    der String(c) ist leider ein Wort^^...



  • Mahlzeit,
    Ein Array ist wie du es richtig gennant hast ein (nicht dynamisches) Feld, in dem du mehrere Werte des gleichen!!! Typs speichern kannst. Das heißt, dass du du im selben Array keine Integer und String zusammenspeichern kannst. Du brauchst dafür verschiedene Arrays. Auf die einzelnen Felder greifst du per Index zu (Der erste Index ist null).
    Die Syntax für ein Array sieht so aus:

    TYP Name[Anzahl Felder]; // Array erstellen
    // Beispiele
    int Lotto[6];
    Lotto[0] = 6;
    Lotto[5] = 49 // 5 ist der größte zulässige Index
    int a = Lotto[5] // a = 49
    

    Ich hoffe ich konnte helfen


  • Mod

    Eigentlich sind wir hier ja kein C++-Tutorial, aber ausnahmsweise:

    #include<vector>
    #include<iostream>
    
    int main()
    {
      std::vector<int> a;   // a ist ein Feld von Integerwerten
      a.push_back(5);       // Den Wert 5 hinten an a anhängen
      a.push_back(10)       // Den Wert 10 hinten an a anhängen
    
      std::cout<< a[0];     // Erstes Element (5) von a. In C++ fängt man bei 0 an zu zählen
      std::cout<< a[1];     // Zweites Element (10) von a. 
    }
    

    Das sind natürlich nur die absoluten Grundlagen, da kann man noch viel mehr und tollere Sachen mit machen.



  • Mir fallen da schlagartig Struct/Klassen ein.

    #include <string>
    #include <iostream>
    
    struct Daten
    {
       int b, c;
       std::string d;
    };
    
    int main()
    {
       Daten a[10];
    
       for(int i = 0; i < 10; ++i)
       {
          a[i].b = i;
          a[i].c = i * i;
          a[i].d = "Hallo";
       }
    
       for(int i = 0; i < 10; ++i)
    	  std::cout << "Nummer: " << i + 1 << "\nb: " << a[i].b << "\nc: " << a[i].c << "\nd: " << a[i].d << "\n\n";
    }
    

    Natürlich kann man den Array durch einen std::vector gescheiter ersetzen und viel verbessern.



  • Ein Array definiert man mit [], wie du scheinbar schon weißt, und zwar folgendermaßen:

    int ein_paar_zahlen[] = { 42, 666 };
    

    Optional kann man auch in den eckigen Klammern die Anzahl der Elemente angeben, wobei man auch mehr angeben kann, als auf der rechten Seite steht, womit man dann Elemente hat, die mit dem Standardwert initialisiert sind, bei int ist das der Wert 0, bei strings der Leerstring "":

    std::string ein_paar_strings[5] = { "hallo", "welt", "42", "666" };
    

    Will man die Elemente noch nicht initialisieren, dann kann man die {} weglassen, allerdings muss man dann die Größe angeben:

    char ein_paar_zeichen[42];
    

    Der Zugriff auf die Elemente funktioniert auch wieder über [], beachte aber, dass man bei 0 zu zählen beginnt:

    std::cout << ein_paar_zahlen[0] << std::endl; // 42
    

    Das Array 'ein_paar_zahlen' hat somit die Elemente 0 und 1. 'ein_paar_strings' hat 0-4. Diese "Nummern" im Array werden auch Indizes genannt. Wichtig: Der maximale Index ist immer Größe - 1

    Noch etwas: Die Größe eines Arrays muss immer zur Compilezeit bekannt sein, das heißt, es ist nicht möglich, den User nach einer Zahl zu fragen und diese dann als Arraygröße zu verwenden. Willst du das, dann musst du std::vector nehmen. (Den du allerdings sowieso immer anstatt Arrays nehmen solltest)



  • Erstmals danke an euch allen 🙂

    Ich probiere das erstmal aus!:)Aber die Logik dahinter habe ich verstanden.

    Ps.Bin halt Anfänger 🙂



  • Okay,das habe ich nun verstanden.

    Problem ist von mir :

    Ich habe a,b,c,d (integerwerte nach größe Sotiert)
    Bsp: 3,4,5,7

    kann ich denn jetzt aus dem a einen Array bauen?
    Also das a[x,y] beinhaltet und dann es mit einem anderen Array vergleichen?

    a[x,y] mit b[k,l] vergleichen.(a = 3 und b = 4)

    😞



  • Musst du Element für Element machen. Durch den Index-Operator [bla] kannst Du auf einzelne Elemente aus dem Array zugreifen mit bla aus [0, anzahl_element_in_array -1].

    Gewöhn Dir übrigens bitte Mal a[x,y] ab, das ist keine C++-Syntax.

    Was geht ist, dass Du dir eine Klasse bastelst, die zwei Attribute hat. Dann kannst Du einen Vergleichsoperator für zwei Instanzen der Klasse schreiben. 🙂



  • Mal so nebenbei, durch gewisse "Tricks" (boost::any) ist es möglich, in ein Array beliebige Dinge hineinzustopfen (und das typsicher), allerdings ist das meistens schlechter Programmierstil und nicht notwendig.



  • vielen vielen vielen Dank an alle 😃

    Ich habe nun viel dazu gelernt!

    Ps.Super Forum 😃 😃 😃 🙂


Anmelden zum Antworten