mehrdimensionale arrays an eine funktion übergeben
-
Hey,
ich hab folgendes Problem:
Mit dem Programm sollen zwei Matrizen multipliziert werden und diese in ein drittes zweidimensionales Array gespeichert werden.
Fehlermeldung:
1>------ Erstellen gestartet: Projekt: Aufgabe19, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>main.cpp 1>c:\dokumente und einstellungen\weedjo\desktop\praktikum1\aufgabe19\aufgabe19\main.cpp(10) : error C2109: Index erfordert ein Array oder einen Zeigertyp 1>c:\dokumente und einstellungen\weedjo\desktop\praktikum1\aufgabe19\aufgabe19\main.cpp(10) : error C2109: Index erfordert ein Array oder einen Zeigertyp 1>c:\dokumente und einstellungen\weedjo\desktop\praktikum1\aufgabe19\aufgabe19\main.cpp(10) : error C2109: Index erfordert ein Array oder einen Zeigertyp 1>c:\dokumente und einstellungen\weedjo\desktop\praktikum1\aufgabe19\aufgabe19\main.cpp(60) : error C2664: 'multiplizieren': Konvertierung des Parameters 1 von 'double (*__w64 )[4][1]' in 'double *' nicht möglich 1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat. 1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Weedjo\Desktop\Praktikum1\Aufgabe19\Aufgabe19\Debug\BuildLog.htm" gespeichert. 1>Aufgabe19 - 4 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Das ist die Funktion:
void multiplizieren(double *C, double *B,double *A){ for (int i=0;i<4;i++) for (int j=0;j<4;j++) *C[i][0] += *B[i][j]* (*A[j][0]); }Und das ist der Aufruf in der main() Methode:
multiplizieren(&ergebnisArray, &alpha, &eingabeArray);Und falls jemand noch braucht, hier nochmal der Ganze Code:
#include <iostream> #include <cmath> using namespace std; void multiplizieren(double *C, double *B,double *A){ for (int i=0;i<4;i++) for (int j=0;j<4;j++) C[i][0] += B[i][j]* (A[j][0]); } int main(){ //VARIABLENDEKLARATION const double PI=3.1415926535897932384626433832795; double x,y,z, winkel; double ergebnisArray[4][1] = {0}; double f,g,h; //EINGABE cout << "Koordinaten eingeben:\n"; cout << "x= "; cin >> x; cout << "y= "; cin >> y; cout << "z= "; cin >> z; cout << "Winkel eingeben (Grad Bogenmass): "; cin >> winkel; f = cos(winkel*PI/180); g = -(sin(winkel*PI/180)); h = sin(winkel*PI/180); if (f<0.01 && f>-0.01) f=0; if (g<0.01 && g>-0.01) g=0; if (h<0.01 && h>-0.01) h=0; double alpha[4][4] = { {1, 0, 0, 0}, {0, f ,g, 0}, {0, h, f, 0}, {0, 0 ,0 ,1} }; double eingabeArray[4][1] = { {x}, {y}, {z}, {1} }; multiplizieren(&ergebnisArray, &alpha, &eingabeArray); //AUSGABE cout.precision(3); cout << "Rotation um " << winkel << " Grad liefert: \n"; cout << "x= " << ergebnisArray[0][0] << endl; cout << "y= " << ergebnisArray[1][0] << endl; cout << "z= " << ergebnisArray[2][0] << endl; return 0; }Wie kriege ich den Fehler weg?
Danke für die Hilfe
-
Ich denke, dass du die Antwort hier finden solltest:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-212469-and-highlight-is-array+2+dimensionales.htmlUnd das nächste mal bitte noch die Stelle kennzeichnen, wo die Fehler vorkommen.