Arraygröße variabel gestalten???



  • int main() {
    	setlocale(LC_ALL, "German");
    	srand(time(0));
    	int r;
    	do {
    		cout << "Bitte geben sie die Anzahl der Zeilen der Matrizen ein (zwischen 1 und 5): " << endl;
    		cin >> r;
    	} while ((r <= 0) || (r > MAXROW));
    

    Hallo liebe Community,
    ich muss im Rahmen eines Kurses eine Matrix so definieren, als dass die Anzahl der Spalten(COLUMN) vorgegeben ist, der Benutzer des Programmes die Anzahl der Reihen jedoch frei bis zu einem Maximum(MAXROW):

    const int MAXROW = 5;
    const int COLUMN = 5;
    

    bestimmen kann.
    Mein bisheriger Ansatz war folgender:

    for (int i = 0; i < r, i++) {
    		for (int j = 0; j < r; j++) {
    			int p = rand() % 20;
    			int m1[i][j] =
    		}
    	}
    

    Jedoch habe ich relativ schnell erkannt, dass C++ Variablen in Arrays nicht so toll findet... Achso, die Matrizen sollen zufällig sein, deswegen habe ich versucht die matrix quasi erst in der for-Schleife zu definieren...
    Ich bin für jede Hilfe dankbar.
    MfG Tim.



  • @Qualitätsbemme sagte in Arraygröße variabel gestalten???:

    int m1[i][j]

    Das definiert ein neues Array mit den Dimensionen i und j.
    Der Scope (Sichtbarkeit/Lebensraum) ist aber nur innerhalb der umgebenden {}. Bei dir also recht kurz.

    Zudem sind das VLA, die nicht unterstützt werden müssen.

    Selbst wenn deine Matrix 5x5 ist, brauchst du ja nur einen Teil davon verwenden.



  • Das einfachste ist

    int matrix[MAXROW][COLUMN];
    

    und dann nur die Zeilen 0 bis r-1 zu benutzen (solange r < MAXROW, was man vorher abprüfen muss.)

    Es gibt andere und bessere Möglichkeiten, aber das ist das, was der Kurs meint. Anderernfalls bräuchte man die Bedingung r < MAXROW ja gar nicht. Man müsste auch nicht COLUMN fest vorgeben.



  • Die Aufgabe, die mir gestellt wurde lautete "Erzeugen Sie vier Matrizen mit maximal 5 Zeilen (MAXROW sei 5) und jeweils genau 5 Spalten (COLUMN sei 5)."
    Ich kenne mich auch noch nicht sooo gut mit c++ aus. Wäre also über Codebeispiele dankbar ^^



  • int matrix1[MAXROW][MAXCOLUMN];
    int matrix2[MAXROW][MAXCOLUMN];
    int matrix3[MAXROW][MAXCOLUMN];
    int matrix4[MAXROW][MAXCOLUMN];
    

    oder

    int matrices[4][MAXROW][MAXCOLUMN];
    


  • Wenn´s hier im Forum doch bloß sowas wie einen Vorschlag für eine Array2D Klasse gäbe...


Anmelden zum Antworten