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.