Fehlermeldung bei Programm!



  • Hallo Leute,

    bin neu hier und hoffe mir kann jemand helfen.

    Und zwar habe ich in c++ ein Programm geschrieben, das mittels Funktionen determinaten und Lagerkräfte berechnen soll. Ich bekomme aber beim kompilieren in der rotmakierten Zeile die Fehlermeldung "det = nichtdeklarierter Bezeichner" und in der Grün makierten Zeile den Fehler " det = neudefinition".

    Kann mir jemand sagen wie ich diese Fehler beheben kann?

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    void lingl (double A[3][3], double B[3], double F[3])		// Funktion zur Berechnung der Auflagerkräfte
    {
    	[u]double DA, D[3];[/u]	
             int i;
    	double M0; //[3][3];
    	double M1; //[3][3];
    	double M2; //[3][3];
    
    	M0 = B[0]*A[1][2]*A[2][2] + A[0][1]*A[1][2]*B[2] + A[0][2]*B[1]*A[2][1] -
    		 A[0][2]*A[1][2]*B[2] - B[0]*A[1][2]*A[2][1] - A[0][1]*B[1]*A[2][2];
    
    	M1 = A[0][0]*B[1]*A[2][2] + B[0]*A[1][2]*A[2][0] + A[0][2]*A[1][0]*B[2] -
    		 A[0][2]*B[1]*A[2][0] - A[0][0]*A[1][2]*B[2] - B[0]*A[1][0]*A[2][2];
    
    	M2 = A[0][0]*A[1][1]*B[2] + A[0][1]*B[1]*A[2][0] + A[0][2]*A[1][0]*A[2][1] -
    	  	 B[0]*A[1][2]*A[2][0] - A[0][0]*B[1]*A[2][1] - A[0][1]*A[1][0]*B[2];
    
    	[u]DA = Det(A);[/u]	
             D[0] = Det(M0);
    	D[1] = Det(M1);
    	D[2] = Det(M2);
    
    	F[0] = D[0] / DA;
    	F[1] = D[1] / DA;
    	F[2] = D[2] / DA;
    }			
    
    double Det (double A[3][3])			// Funktion zur Berechnung der Determinante
    {
    	double D;
    
    	D = A[0][0]*A[1][1]*A[2][2] + A[0][1]*A[1][2]*A[2][0] + A[0][2]*A[1][0]*A[2][1] -
    		A[0][2]*A[1][2]*A[2][0] - A[0][0]*A[1][2]*A[2][1] - A[0][1]*A[1][0]*A[2][2];
    
    	return D;
    }
    
    void main (void)		// Hauptfunktion					
    {
    	double A[3][3];
    	double B[3];
    	double F[3];
    	double l[4];
    	double delta[3];
    	int i=0;
    	double G=0;
    
    	cout << "Bitte geben Sie die in Aufgabe 9 vorgegebenen Groessen ein!" << endl;
    	cout << "Bitte geben Sie die Gewichtskraft G [N] ein!" << endl;
    	cin >> G;
    
    	for (i=0; i<=3; i++)
    	{
    		cout << "Bitte geben Sie die Winkel delta1, delta2 und delta3 [-] ein!" << endl;
    		cin >> delta[i];
    	}
    
    	for (i=0; i<=4; i++)
    	{
    		cout << "Bitte geben Sie die Längen l1, l2, l3, und l4 [m] ein!" << endl;
    		cin >> l[i];
    	}
    
    	A[0][0] = cos(delta[0]);		A[0][1] = cos(delta[1]);		A[0][2] = -cos(delta[2]);
    	A[1][0] = sin(delta[0]);		A[1][1] = sin(delta[1]);		A[1][2] =  sin(delta[2]);
    	A[2][0] = l[0]*sin(delta[0]);	A[2][1] = l[1]*sin(delta[1]);	A[2][2] = l[2]*sin(delta[2]);
    
    	B[0] = 0;						B[1] = G;						B[2] = G * l[3];
    
    	lingl (A, B, F);			// Aufruf der Funktion zur Berechnung der Auflagerkräfte
    
    	for (i=0; i<=2; i++)
    
    	cout << F[i] << endl;
    }
    


  • #include <iostream>
    #include <cmath>
    using namespace std;
    
    double Det (double A[3][3]); // oder die funktion gleich oberhalb schreiben
    
    void lingl (double A[3][3], double B[3], double F[3])        // Funktion zur Berechnung der Auflagerkräfte
    { // ...
    

    erklärungen
    http://tutorial.schornboeck.net/funktionen2.htm
    http://www.cpp-tutor.de/cpp/le07/le07_01.htm

    [edit]
    übrigens
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=main#Answ



  • also ich seh nur schwarz weiß. nichts rotes und nichts grünes. 🤡



  • in der Funktion lingl ist Det nicht bekannt, mach von deinen Funktionen prototypen!



  • Wenn ich das ganz oberhalb schreibe, kommt die Fehlermeldung "'det' konvertierung des Parameter 1 von 'double' in 'double[][3]' nicht möglich!"

    Ich bin mit meinem latein am ende. Also vielleicht weiß jemand noch einen rat?



  • weil M0, M1, M2 nur double sind kein double[3][3] 😃



  • dann heißt es aber, in der Berechnungszeile von Mo, M1 und M2, " '=' double kann nicht in double [3][3] konvertiert werden" ???



  • Dinchen schrieb:

    dann heißt es aber, in der Berechnungszeile von Mo, M1 und M2, " '=' double kann nicht in double [3][3] konvertiert werden" ???

    irgendwie war mir klar das dieses jetzt kommt. 😃

    M0 = B[0]*A[1][2]*A[2][2] + A[0][1]*A[1][2]*B[2] + A[0][2]*B[1]*A[2][1] -
             A[0][2]*A[1][2]*B[2] - B[0]*A[1][2]*A[2][1] - A[0][1]*B[1]*A[2][2];
    

    das ergebniss ist ja nur ein double, ergo musst du indixes für dein
    2-dimensionles double array angeben.
    bsp: M0[1][2] = ...

    da ich allerdings die berechnung nicht verstehe, solltest du dir darüber gedanken
    machen ob das alles so funktionert wie du es dir vorstellst.



  • Ich danke schon mal für Deine Hilfe und werde mein glück mal versuchen.


Anmelden zum Antworten