Zahlenmatrix



  • Heho 😉

    Meine Zahlenmatrix sollte bei einer Eingabe von 4, 2 zu einer Ausgabe von:

    1 2
    2 3
    3 4
    4 5

    kommen.

    Allerdings komm ich gar nicht bis zum Ergebnis...

    int iHoehe;
    	int iBreite;
    
    	cout << "Bitte geben Sie eine Hoehe fuer die Zahlenmatrix ein: " << endl;
    	cin >> iHoehe;
    	cout << "Bitte geben Sie jetzt eine Breite fuer die Zahlenmatrix ein: " << endl;
    	cin >> iBreite;
    
    	int matrix[10] [10];
    
    	if (iHoehe > iBreite) {
    
    		cout << "Matrix mit der Hoehe: " << iHoehe << " und der Breite: " << iBreite << " wird erstellt." << endl;
    
    		matrix[10][10] = matrix[iHoehe][iBreite];
    
    		for (int i = 1; i <= iHoehe; i++){  
    			for (int j = 1; j < iBreite; j++) {
    				matrix[i][j] = i + j + 1;		
    			}
    		}
    
    		for (int i = 0; i < iBreite; i++) {
    			for (int j = 0; j < iHoehe; j++) {
    				cout << (matrix[i][j] + " ") << endl;	
    			}
    
    		cout << endl;
    
    		}
    

    Allerdings wirft er eine Fehlermeldung, sobald die Höhe und die Breite eingegeben wurden und kommt somit zu keinem Ergebnis...
    Ich sitz jetzt hier dran und entdeck den Fehler nicht (wahrscheinlich Tomaten auf den Augen)...
    Sieht jemand den Fehler?^^

    Gruß Zel



  • Zel2491 schrieb:

    Allerdings wirft er eine Fehlermeldung, ....

    die verrat ich aber nicht. Also (mal wieder) ein Ratespiel ?

    Die Antwort also ebenfalls mit einer Frage:

    Wenn Felder bei C immer mit 0 starten, wie passt dann

    int matrix[10] [10];
    

    und

    matrix[10][10] = matrix[iHoehe][iBreite];
    

    zusammen 😉



  • Ratespiele mag ich 😉

    Bei den genannten Zeilen war ich mir selber nicht so sicher, allerdings muss ich Variablen als Werte für das Array nehmen - wenn ich es direkt mit Variablen initialisieren will, geht das nicht (braucht eine Konstante). Hab probiert das dann umzuschreiben...^^ Aber das geht dann wohl nicht 😃

    Da du ja meinen Fehler anscheinend gesehen hast, komme ich wieder mit einer Gegenfrage 😛 Ist das DER Fehler, wieso es nicht funktioniert, oder gibt es noch mehrere Fehler in dem Code? 😉

    int matrix [iHoehe][iBreite];
    

    wollte ich eigentlich nehmen - geht halt nur nicht.

    Ich hatte es mit Pointern(?) ausprobiert, ging aber nicht so richtig,
    falls das die Lösung ist, besitze ich noch nicht das Wissen, um damit richtig umzugehen im weiteren Quellcodeverlauf^^

    Edit:

    int** matrix = new int*[iHoehe];
    //...
    
    for (int i = 0; i < iHoehe; i++) {
    			matrix[i] = new int[iBreite];
    		}
    

    ist das ein möglicher Ansatz?

    Neuer Edit:

    BAM! Habs 😃

    int** matrix;
    
    //...
    
    matrix = new int* [iHoehe];
    
    		for (int i = 0; i < iHoehe; i++) {
    			matrix[i] = new int[iBreite];
    		}
    
    		for (int i = 0; i < iHoehe; i++) {
    			for (int j = 0; j < iBreite; j++) {
    
    				matrix[i][j] = i + j + 1;
    			}
    		}
    
    		for (int i = 0; i < iHoehe; i++) {
    
          for (int j = 0; j < iBreite; j++) {
    
             cout << matrix[i][j] << " ";
    
          }
    
          cout << "\n";
    
       }
    

    Klappt perfekt - danke nochmal für den Denkanstoß 😉


Anmelden zum Antworten