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.html

    Und das nächste mal bitte noch die Stelle kennzeichnen, wo die Fehler vorkommen.


Anmelden zum Antworten