Array (2 Dimensionen) Grundlagen? Hilfe bei Aufgabe



  • hallo, ich bin jetzt seit etwa einem Monat dabei mit c++ zu programmieren. Ich hab ne Aufgabe bei der ich in einem 2-Dimensionalen Array 4 Punkkoordinaten speichern soll. Also mit x und y Achse. Das habe ich bisher:
    #include <iostream>
    #include <array>
    using namespace std;

    int main()
    {

    int x1, x2, x3, x4, y1, y2, y3, y4;
    int punkt1, punkt2, punkt3, punkt4;
    cout << "Geben sie ihre Punktkoordinaten ein:" << endl;
    cout << "Punkt 1: ";
    int kod[50][50];
    punkt1[x1][y1];
    punkt2[x2][y2];
    punkt3[x3][y4];
    punkt4[x4][y4];
    
    
    	return 0;
    

    }
    Ich hab grad erst angefangen und ich weiß selber wie das aussieht. Wie speichert er jetzt sowohl x als auch y Koordinate. wie kann ich auch minus zahlen verwenden. Ich will eine Schleife dafür benutzen. aber nur wie



  • Ich würde dafür gar kein 2dimensionales Array nehmen, sondern direkt einen Punkt und den ins Array.

    
    #include <iostream>
    #include <vector>
    using namespace std;
    
    struct Point
    {
         int x = 0;
         int y = 0;
    };
    
    int main()
    {
       vector<Point> points(50); //erst mal 50 Punkte
       points[0] = { x1,  y1 };
       points[1] = { x2,  y2 };
       // etc dann über eine Schleife
    }
    

    Vielleicht noch zur Erklärung, auch wenn da vector statt array steht, vector ist auch ein array, und zwar ein dynamisches. Meistens ist man damit schon bestens bedient.



  • wäre dies die aufgabe wäre es auch nicht so schlimm aber es soll ein 2 dimensionaler array werden. und bei diesen mehrdimensionalen arrays fangen bei mir die probleme an.



  • @PeterKat
    Sollst du die Koordinaten in einem 2D Array speichern?
    Oder sollst du die die Werte der Zellen in dem 2D Array speichern ändern, die mit diesen Koordinaten "adressiert" werden?

    Also Variante 1 wäre: du machst ein 2D Array das 2x4 Zellen hat. Und dann schreibst du die Koordinaten eben da rein. Also du schreibst z.B. x1 in die Zelle (0, 0) und y1 in die Zelle (1, 0). Dann kommt x2 in die Zelle (0, 1) und y2 in die Zelle (1, 1). Usw.

    Variante 2 wäre du machst ein 2D Array das z.B. 50x50 Zellen hat wie in deinem Beispiel. Da könntest du z.B. anfangs erstmal alle Zellen auf 0 setzen. Und wenn z.B. x1=3 und y1=5 könntest du dann vielleicht eine 1 in Zelle (3, 5) schreiben.

    Welche der beiden Varianten ist gefragt?



  • Oh, ich hab mir die Frage nochmal genauer angeschaut und da steht nur dass ich die Koordinaten im Array speichern soll. Also Variante 1. Dann schreib ich es nochmal richtig auf. Falls ich Probleme hab melde ich mich hier wieder. Vielen Dank😁 😁



  • @PeterKat sagte in Array (2 Dimensionen) Grundlagen? Hilfe bei Aufgabe:

    da steht nur dass ich die Koordinaten im Array speichern soll. Also Variante 1.

    Wenn das so dasteht dann würde ich auch auf Variante 1 tippen. Variante 2 wäre auch ein ungewöhnliches Beispiel - zumindest ein recht ungewöhnlich als erstes Beispiel zum Thema mehrdimensionale Arrays.



  • @PeterKat sagte in Array (2 Dimensionen) Grundlagen? Hilfe bei Aufgabe:

    #include <array>

    Warum benutzt du C-Style Arrays wenn du doch den Header für std::array einbindest?



  • Wie geht das mit dem User input beim 2d Array. Beim 1d macht man ja:

    for (int i = 0; i < punkte; ++i) {
    std:: cin >> punkt[i];

    	}


  • @PeterKat sagte in Array (2 Dimensionen) Grundlagen? Hilfe bei Aufgabe:

    Wie geht das mit dem User input beim 2d Array. Beim 1d macht man ja:
    for (int i = 0; i < punkte; ++i) {
    std:: cin >> punkt[i];
    }

    Du hast zwei Indizes, also musst du auch über beide iterieren.
    Dafür benutzt man verschachtelte Schleifen.
    Innerhab der for-i Schleife machst du noch eine mit j.


Log in to reply