ZD dynamischen Array über Funktion erstellen
-
[gelöst]
Hallo,
ich möchte eine Matrix mit Hilfe einer Funktion erstellen, weiß aber nicht mehr weiter. Keine Ahnung wie wo ich dabei genau Zeiger setzen soll. Mein Code:
#include <iostream> #include <cstdlib> using namespace std; void newmatrix(int **matrix, int zeile, int spalte); // Problem int main(void){ int zeile, spalte; int **matrix; cout << "Wie viele Zeilen: "; cin >> zeile; cout << "Wie viele Spalten: "; cin >> spalte; newmatrix(matrix, zeile, spalte); //Problem // Initialisieren for(int i = 0; i < zeile; i++){ for(int j = 0; j < spalte; j++){ cout << "Eingabe des Elementes[" << i+1 << "][" << j+1 << "] : "; cin >> matrix[i][j]; } } cout << endl; // Ausgeben cout << "Matrix:" << endl; for(int i = 0; i < zeile; i++){ for(int j = 0; j < spalte; j++){ cout << matrix[i][j] << " " ; } cout << endl; } for(int i = 0; i < zeile; i++){ delete [] matrix[i]; } delete [] matrix; return EXIT_SUCCESS; } // Problem: void newmatrix(int **matrix, int zeile, int spalte){ // Speicher für die einzelnen Zeilen reservieren matrix = new int* [zeile]; // Speicher für die einzelnen Spalten reservieren for(int i = 0; i < zeile; i++){ matrix[i] = new int [spalte]; } }
Viele Grüße
-
Ich habe mein Problem gelöst:
#include <iostream> #include <cstdlib> using namespace std; int **newmatrix(int zeile, int spalte); int main(void){ int zeile, spalte; int **matrix; cout << "Wie viele Zeilen: "; cin >> zeile; cout << "Wie viele Spalten: "; cin >> spalte; matrix = newmatrix(zeile, spalte); // Initialisieren for(int i = 0; i < zeile; i++){ for(int j = 0; j < spalte; j++){ cout << "Eingabe des Elementes[" << i+1 << "][" << j+1 << "] : "; cin >> matrix[i][j]; } } cout << endl; // Ausgeben cout << "Matrix:" << endl; for(int i = 0; i < zeile; i++){ for(int j = 0; j < spalte; j++){ cout << matrix[i][j] << " " ; } cout << endl; } for(int i = 0; i < zeile; i++){ delete [] matrix[i]; } delete [] matrix; return EXIT_SUCCESS; } int **newmatrix(int zeile, int spalte){ // Speicher für die einzelnen Zeilen reservieren int **matrix; matrix = new int* [zeile]; // Speicher für die einzelnen Spalten reservieren for(int i = 0; i < zeile; i++){ matrix[i] = new int [spalte]; } return matrix; }
-
Endergebnis:
#include <iostream> #include <cstdlib> using namespace std; int **newmatrix(int zeilen, int spalten); void matrixwerte(int **matrix, int zeilen, int spalten); void matrixausgeben(int **matrix, int zeilen, int spalten); void matrixdelete(int **matrix, int zeilen); Ihre Nachricht wurde erfolgreich eingetragen. Hier klicken, um Ihre Nachricht anzuzeigen Hier klicken, um zum Forum zurückzukehren int main(void){ int zeilen, spalten; int **matrix; cout << "Wie viele Zeilen : "; cin >> zeilen; cout << "Wie viele Spalten: "; cin >> spalten; matrix = newmatrix(zeilen, spalten); // Speicher reservieren matrixwerte(matrix, zeilen, spalten); // Initialisieren matrixausgeben(matrix, zeilen, spalten); // Ausgeben matrixdelete(matrix, zeilen); // Speicher freigeben return EXIT_SUCCESS; } int **newmatrix(int zeilen, int spalten){ // Speicher für die einzelnen zeilenn reservieren int **matrix; matrix = new int* [zeilen]; // Speicher für die einzelnen spaltenn reservieren for(int i = 0; i < zeilen; i++){ matrix[i] = new int [spalten]; } return matrix; } void matrixwerte(int **matrix, int zeilen, int spalten){ for(int i = 0; i < zeilen; i++){ for(int j = 0; j < spalten; j++){ cout << "Eingabe des Elementes[" << i+1 << "][" << j+1 << "] : "; cin >> matrix[i][j]; } } cout << endl; } void matrixausgeben(int **matrix, int zeilen, int spalten){ cout << "Matrix:" << endl; for(int i = 0; i < zeilen; i++){ for(int j = 0; j < spalten; j++){ cout << matrix[i][j] << " " ; } cout << endl; } } void matrixdelete(int **matrix, int zeilen){ // spaltenn der i-ten zeilen freigeben for(int i = 0; i < zeilen; i++){ delete [] matrix[i]; } // Jetzt die leeren zeilenn freigeben delete [] matrix; }
Edit: Ich glaube ich habe ein paar Fehler dabei gemacht. Läuft nicht so wie es soll. Wenn ich z.B. ein Element z.B. matrix[0][3] ausgeben möchte kommt ein anderer Wert raus. Speicherproblem. Ich hoffe ihr könnt mir weiterhelfen
Es läuft alles mein Fehler hatte was falsches getippt.