000
19.07.2006, 15:14 Uhr
Yadgar
|
High!
Die Aufgabenstellung, an der ich im Moment herumknobele lautet:
"Erstellen Sie eine Funktion, der ein zweidimensionales Feld, dessen Dimensionen und dazu passend zwei Indexwerte übergeben werden, die bei Indexüberschreitung Abbruch mit Warnung erzwingt und ansonsten das im Aufruf angesprochene Element als Referenz zurückgibt!"
Funktion und Implementierung sehen bei mir so aus (eine Vorgängerversion für eindimensionale Felder funktionierte einwandfrei!):
C++: |
double& select2(double* feld[], int dim1, int dim2, int index1, int index2) { if ((index1 < 0 || index1 >= dim1) || (index2 < 0 || index2 >=dim2)) { cout << "Index nicht im zulässigen Bereich!" << endl; exit (1); // Programmabbruch bei Indexüberschreitung } return feld[index1][index2]; }
int main() { double f[3][3]={{12.45, 89.14, 44.67}, {9.8, 34.21, 89.12}, {74.67, 23.96, 25.9}}; double g[3][3]; int i, j;
for (i=0; i<3; i++) { for (j=0; j<3; j++) { // select(g, 3, 3, i, j) = select(f, 3, 3, i, j); cout << select2(f, 3, 3, i, j); if (j==2) cout << "\n"; else cout << ", "; } } getchar(); }
|
...nur leider bekomme ich ständig die Fehlermeldung (bezogen auf den Aufruf in der inneren for-Schleife): cannot convert `double (*)[3]' to `double**' for argument `1' to `double& select2(double**, int, int, int, int)'
Wenn ich einer Funktion ein zweidimensionales Array übergebe, dann kann das doch nur als Array von Zeigern geschehen... oder habe ich da was übersehen?
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |