Arrays mithilfe von Pointern von Funktionen übergeben
-
Hallo!
Ich habe ein Problem, mit dem ich mich schon länger rumschlage..
Ich habe ein Programm geschrieben, bei dem ich in einer Funktion eine Matrix, sprich ein 2dimensionales Array erstelle. Diese Matrix möchte ich in der Main-Funktion anwenden, aber der Computer sagt "q [also die Matrix] undeclared".
Ich glaube, da kommen dann die Pointer ins Spiel, aber so genau kenne ich mich da nicht aus und auf anderen Internetseiten konnte ich auch nichts konkretes darüber finden.
Es wäre nett, wenn mir jemand helfen könnte!Ach ja, hier der Code, den ich bereits habe:
Als Fuktion habe ich:
(q und a sind btw auch zwei Matrizen, die ich in einer anderen Funktion definiert habe, bei denen ich dann das selbe Problem hab..)//Funktion für Matrixmultiplikation
double matrixmult (double q[][100], double a[][100], int dimbreit, int dimhoch)
{
int i, j, t;
double r[100][100], variable[100], var;for (i=0; i<dimhoch; i++)
{
for (j=0; j<dimbreit; j++)
{
for (t=0; t<dimhoch-i; t++)
{
variable[t]=q[i][j+t]*a[i+t][j];
var+=variable[t];
}
r[i][j]=var;
}
}
return r[i][j];
}Und dann der Teil der Main-Funktion:
int m, n;
// R ausspucken
for(m=0; m<dimhoch; m++)
{
for (n=0;n<dimbreit;n++)
{
cout<<"Die Matrix R lautet:"<<endl<<r[m][n]<<" ";
}
cout<<endl;
}
-
Tanja.Pf schrieb:
//Funktion für Matrixmultiplikation double matrixmult (double q[][100], double a[][100], int dimbreit, int dimhoch)Sorry, aber das ist Käse hoch drei. Erstens ist das Ergebnis einer Matrixmultiplikation wieder eine Matrix und kein double. Zweitens ist double[][100] als Matrix-Typ eher unbrauchbar. Für kleine Matrizen verschwendest du damit Speicher und große Matrizen kannst du damit gar nicht darstellen. Hinzu kommt, dass rohe Arrays bzgl Übergabe an Funktionen und Rückgabe "irregulär" sind. Du kannst so ein Ding z.B. nicht zurück geben. Schöner wär auch eine Kapselung des Konzepts "Matrix", so dass du die Größen (also Anzahl der Zeilen und Spalten) nicht separat übertragen musst. Das ist nämlich fehleranfällig so.
Siehe