Fehler C2088
-
Moin Leute ich hab ein Problem. ich hab als aufgabe bekommen ein programm zu schreiben, dass aus Längen , Winkel únd einer Kraft die Auflagerkräfte ausrechnet. Dieses Programm funktionierte auch, jetzt mussten wir es etwas umschreiben, sodass die Winkel, längen und die kraft aus einer Datei ausgelesen werden und dann in eine andere gespeichert werden, und hier gibt es bei mir jetzt fehler, vlt kann ja mal jemand drüber gucken und mir sagen wo der fehler liegt.
PS: Bin kein Informatik student sondern ich studiere Maschinenbau, also bitte keine Kommentare wie" was denn das fürn mist" oder" " das kann aber besser programmieren"

//===========================================================================================
//Programm :Datei Ein und Ausgabe
//Autor :Nicolas Wölk
//Aufgabe :10
//Datum :16.01.13
//Beschreibung:Programmieren mit Dateien
//===========================================================================================#include <iostream>
#include <cmath>
using namespace std;
#include<string>
#include<sstream>
#include<iomanip>
#include<fstream>void Lingl(double a[3][3], double b [3], double f[3]); //Deklaration von Lingl
double Det(double a[3][3])
{
double ret;ret=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][1]*a[2][0] - a[0][0]*a[1][2]*a[2][1] - a[0][1]*a[1][0]*a[2][2];
return ret;
}void main()
{
int i,j;
const double PI=3.14159;
double g, d[3], l[4], a[3][3], b[3],f[3]; //Ab hier kommt jetzt die stelle wo es net mehr funktioniert.//ifstream myInputFile("Balken2.txt");
if(!myInputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
string zeile; istringstream iss;while(!myInputFile.eof())
{
getline(myInputFile,zeile);if(zeile.find("G:")!=string::npos)
{
zeile.erase(0,2);
iss.str(zeile);
iss>>g;
iss.clear();}
}}
ifstream myInputFile("Balken2.txt");
if(!myInputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
string zeile; istringstream iss;
while(!myInputFile.eof())
{getline(myInputFile,zeile);
if(zeile.find("D3:")!=string::npos)
{zeile.erase(0,3);
iss.str(zeile);
iss>>d[2];
iss.clear();
}}}ifstream myInputFile("Balken2.txt");
if(!myInputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
string zeile; istringstream iss;
while(!myInputFile.eof())
{getline(myInputFile,zeile);
if(zeile.find("D2:")!=string::npos)
{zeile.erase(0,3);
iss.str(zeile);
iss>>d[1];
iss.clear();
}}}ifstream myInputFile("Balken2.txt");
if(!myInputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
string zeile; istringstream iss;
while(!myInputFile.eof())
{getline(myInputFile,zeile);
if(zeile.find("D1:")!=string::npos)
{zeile.erase(0,3);
iss.str(zeile);
iss>>d[0];
iss.clear();
}}}ifstream myInputFile("Balken2.txt");
if(!myInputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
string zeile; istringstream iss;
while(!myInputFile.eof())
{getline(myInputFile,zeile);
if(zeile.find("L1:")!=string::npos)
{zeile.erase(0,3);
iss.str(zeile);
iss>>l[0];
iss.clear();
}}}ifstream myInputFile("Balken2.txt");
if(!myInputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
string zeile; istringstream iss;
while(!myInputFile.eof())
{getline(myInputFile,zeile);
if(zeile.find("L2:")!=string::npos)
{zeile.erase(0,3);
iss.str(zeile);
iss>>l[1];
iss.clear();
}}}ifstream myInputFile("Balken2.txt");
if(!myInputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
string zeile; istringstream iss;
while(!myInputFile.eof())
{getline(myInputFile,zeile);
if(zeile.find("L3:")!=string::npos)
{zeile.erase(0,3);
iss.str(zeile);
iss>>l[2];
iss.clear();
}}}ifstream myInputFile("Balken2.txt");
if(!myInputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
string zeile; istringstream iss;
while(!myInputFile.eof())
{getline(myInputFile,zeile);
if(zeile.find("L4:")!=string::npos)
{zeile.erase(0,3);
iss.str(zeile);
iss>>l[3];
iss.clear();
}}}ofstream myOutputFile("Lager.txt");
if(! myOutputFile)
{
cerr<<"Fehler beim Öffnen der Datei";
}
else
{
myOutputFile<<"Auflagerkraefte fuer einen gegebenen Balken"<<endl;
myOutputFile<<"L1= "<<l[0]<<" L2= "<<l[1]<<" L3= "<<l[2]<<" L4= "<<l[3]<<endl;
myOutputFile<<"D1= "<<d[0]<<" D2= "<<d[1]<<" D3= "<<d[2]<<endl;
myOutputFile<<"G= "<<g<<endl;}
for(i=0;i<3;i++)
{
d[i]=2*PI/360*d[i]; //Winkel in Bogenmaß umwandeln
}a[0][0]=cos(d[0]);
a[0][1]=cos(d[1]);
a[0][2]=-cos(d[2]);
a[1][0]=sin(d[0]); //Berechnungen der Matrix
a[1][1]=sin(d[1]);
a[1][2]=sin(d[2]);
a[2][0]=sin(d[0])*l[0];
a[2][1]=sin(d[1])*l[1];
a[2][2]=sin(d[2])*l[2];b[0]=0;
b[1]=g; //Berechnungen des Vektors
b[2]=g*l[3];Lingl(a,b,f);
myOutputFile<<"F1= "<<f[0]<<" F2= "<<f[1]<<" F3= "<<f[2]<<endl;
}
void Lingl(double a[3][3], double b [3], double f[3])
{
double deta;
double m[3][3];
int i,j;deta=Det(a);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
m[i][j]=a[i][j];
m[0][0]=b[0];
m[1][0]=b[1];
m[2][0]=b[2];
}
}f[0]=Det(m)/deta;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
m[i][j]=a[i][j];
m[0][1]=b[0];
m[1][1]=b[1];
m[2][1]=b[2];
}}
f[1]=Det(m)/deta;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
m[i][j]=a[i][j];
m[0][2]=b[0];
m[1][2]=b[1];
m[2][2]=b[2];
}}
f[2]=Det(m)/deta;
}
-
Hab noch nichts verändert. Nur ein wenig einrücken lassen udn Code-Tags drumgemacht.
//=========================================================================================== //Programm :Datei Ein und Ausgabe //Autor :Nicolas Wölk //Aufgabe :10 //Datum :16.01.13 //Beschreibung:Programmieren mit Dateien //=========================================================================================== #include <iostream> #include <cmath> #include<string> #include<sstream> #include<iomanip> #include<fstream> using namespace std; void Lingl(double a[3][3], double b [3], double f[3]); //Deklaration von Lingl double Det(double a[3][3]) { double ret; ret=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][1]*a[2][0] - a[0][0]*a[1][2]*a[2][1] - a[0][1]*a[1][0]*a[2][2]; return ret; } int main() { int i,j; const double PI=3.14159; double g, d[3], l[4], a[3][3], b[3],f[3]; //Ab hier kommt jetzt die stelle wo es net mehr funktioniert.// ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("G:")!=string::npos) { zeile.erase(0,2); iss.str(zeile); iss>>g; iss.clear(); } } } ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("D3:")!=string::npos) { zeile.erase(0,3); iss.str(zeile); iss>>d[2]; iss.clear(); } } } ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("D2:")!=string::npos) { zeile.erase(0,3); iss.str(zeile); iss>>d[1]; iss.clear(); } } } ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("D1:")!=string::npos) { zeile.erase(0,3); iss.str(zeile); iss>>d[0]; iss.clear(); } } } ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("L1:")!=string::npos) { zeile.erase(0,3); iss.str(zeile); iss>>l[0]; iss.clear(); } } } ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("L2:")!=string::npos) { zeile.erase(0,3); iss.str(zeile); iss>>l[1]; iss.clear(); } } } ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("L3:")!=string::npos) { zeile.erase(0,3); iss.str(zeile); iss>>l[2]; iss.clear(); } } } ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("L4:")!=string::npos) { zeile.erase(0,3); iss.str(zeile); iss>>l[3]; iss.clear(); } } } ofstream myOutputFile("Lager.txt"); if(! myOutputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { myOutputFile<<"Auflagerkraefte fuer einen gegebenen Balken"<<endl; myOutputFile<<"L1= "<<l[0]<<" L2= "<<l[1]<<" L3= "<<l[2]<<" L4= "<<l[3]<<endl; myOutputFile<<"D1= "<<d[0]<<" D2= "<<d[1]<<" D3= "<<d[2]<<endl; myOutputFile<<"G= "<<g<<endl; } for(i=0; i<3; i++) { d[i]=2*PI/360*d[i]; //Winkel in Bogenmaß umwandeln } a[0][0]=cos(d[0]); a[0][1]=cos(d[1]); a[0][2]=-cos(d[2]); a[1][0]=sin(d[0]); //Berechnungen der Matrix a[1][1]=sin(d[1]); a[1][2]=sin(d[2]); a[2][0]=sin(d[0])*l[0]; a[2][1]=sin(d[1])*l[1]; a[2][2]=sin(d[2])*l[2]; b[0]=0; b[1]=g; //Berechnungen des Vektors b[2]=g*l[3]; Lingl(a,b,f); myOutputFile<<"F1= "<<f[0]<<" F2= "<<f[1]<<" F3= "<<f[2]<<endl; } void Lingl(double a[3][3], double b [3], double f[3]) { double deta; double m[3][3]; int i,j; deta=Det(a); for(i=0; i<3; i++) { for(j=0; j<3; j++) { m[i][j]=a[i][j]; m[0][0]=b[0]; m[1][0]=b[1]; m[2][0]=b[2]; } } f[0]=Det(m)/deta; for(i=0; i<3; i++) { for(j=0; j<3; j++) { m[i][j]=a[i][j]; m[0][1]=b[0]; m[1][1]=b[1]; m[2][1]=b[2]; } } f[1]=Det(m)/deta; for(i=0; i<3; i++) { for(j=0; j<3; j++) { m[i][j]=a[i][j]; m[0][2]=b[0]; m[1][2]=b[1]; m[2][2]=b[2]; } } f[2]=Det(m)/deta; }
-
Alle deine Dateien heissen gleich...
ifstream myInputFile("Balken2.txt"); ifstream myInputFile("Balken2.txt"); ifstream myInputFile("Balken2.txt"); ...Diese Zeile hast du so wie ich sie kopiert habe 6-7mal in deiner main-Funktion stehen, das was danach kommt sieht auch überall recht ähnlich aus.
Der Fehler C2088 kam bei mir auch, allerdings nur bevor ich alle diese Datei-Öffnungs-Streams auskommentiert habe. (Zeile 65-224 habe ich komplett rausgenommen, alles kompiliert wie es soll...)
Tipp: Fehlermeldung lesen und vllt mal einen Doppelklick drauf machen
(Ich impliziere Visual Studio [2012])
-
Muss das sein? 325 Zeilen Code mit der Meldung, dass ein nicht näher beschriebener Fehler unter nicht näher beschriebenen Umständen auftritt. Meinst du, bei solch einer Vorgabe kann ein Außenstehender dir helfen?
Dazu bekommst du höchstens die automatisch generierte Antwort meines Compilers: Es compiliert nicht, da myInputFile 8 Mal (!) im gleichen Scope definiert wurde.
Weiterhin noch ein paar nicht ganz automatisch generierte Kommentare:
1. Wenn du die Zeilen 37-223 ansiehst, meinst du nicht, dass man das auch irgendwie besser hätte lösen können?
2. Zum Thema 1.: Deine Zeilen 37-223 enthalten 8x den gleichen Logikfehler. Du prüfst, liest, verarbeitest, anstatt zu lesen, prüfen, dann zu verarbeiten. Wäre es nicht toll, wenn man das irgendwie korrigieren könnte, ohne die Änderung 8x vorzunehmen?
3. Warum definierst du alle Variablen am Anfang einer Funktion? C++ ist nicht C(89). Ein paar davon benutzt du nicht einmal. Da die Variablen allesamt bloß einen einzigen Buchstaben als Namen haben, ist die Verwirrung komplett. Für Außenstehende erst recht, für dich in zwei Wochen auch, wenn du dann noch einmal mit dem Code arbeiten musst.
4. Das zu 1. gesagte gilt auch für die Zeilen 285-324.Aus all dem folgt: Das ganze Programm wäre vermutlich in 50-100 Zeilen machbar, dabei viel übersichtlicher und weniger fehleranfällig. Wenn du das Programm nochmal ordentlich schreibst, wird dein geheimnisvoller Fehler wahrscheinlich von ganz alleine verschwinden. Falls doch nicht, dann kannst du den Fehler immerhin wenigstens leichter alleine finden. Und falls du ihn trotzdem nicht finden solltest, kann dir ein Außenstehender wesentlich leichter helfen.
Derzeit ist konkrete Hilfestellung fast unmöglich.
-
Moin Leute, ich hab jetzt das programm etwas geändert, jetzt gibt es keine Fehlermeldung mehr, aber jetzt hab ich ein neues Problem, das Programm schreibt flasche Werte in die ausgabe datei und überall schreibt sie dieselbe falsche zahl rein. Wisst ihr warum??
//=========================================================================================== //Programm :Datei Ein und Ausgabe //Autor :Nicolas Wölk //Aufgabe :10 //Datum :16.01.13 //Beschreibung:Programmieren mit Dateien //=========================================================================================== #include <iostream> #include <cmath> using namespace std; #include<string> #include<sstream> #include<iomanip> #include<fstream> void Lingl(double a[3][3], double b [3], double f[3]); //Deklaration von Lingl double Det(double a[3][3]) { double ret; ret=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][1]*a[2][0] - a[0][0]*a[1][2]*a[2][1] - a[0][1]*a[1][0]*a[2][2]; return ret; } void main() { int i,j; const double PI=3.14159; double g, d[3], l[4], a[3][3], b[3],f[3]; ifstream myInputFile("Balken2.txt"); if(!myInputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { string zeile; istringstream iss; while(!myInputFile.eof()) { getline(myInputFile,zeile); if(zeile.find("G:")!=string::npos) { zeile.erase(0,2); iss.str(zeile); iss>>g; iss.clear(); } } } string zeile; istringstream iss; while(!myInputFile.eof()) {getline(myInputFile,zeile); if(zeile.find("D3:")!=string::npos) {zeile.erase(0,3); iss.str(zeile); iss>>d[2]; iss.clear(); }} while(!myInputFile.eof()) {getline(myInputFile,zeile); if(zeile.find("D2:")!=string::npos) {zeile.erase(0,3); iss.str(zeile); iss>>d[1]; iss.clear(); }} string zeile3; istringstream iss3; while(!myInputFile.eof()) {getline(myInputFile,zeile3); if(zeile3.find("D1:")!=string::npos) {zeile3.erase(0,3); iss3.str(zeile3); iss3>>d[0]; iss3.clear(); }} string zeile4; istringstream iss4; while(!myInputFile.eof()) {getline(myInputFile,zeile4); if(zeile4.find("L1:")!=string::npos) {zeile4.erase(0,3); iss4.str(zeile4); iss4>>l[0]; iss4.clear(); }} string zeile5; istringstream iss5; while(!myInputFile.eof()) {getline(myInputFile,zeile5); if(zeile5.find("L2:")!=string::npos) {zeile5.erase(0,3); iss5.str(zeile5); iss5>>l[1]; iss5.clear(); }} string zeile6; istringstream iss6; while(!myInputFile.eof()) {getline(myInputFile,zeile6); if(zeile6.find("L3:")!=string::npos) {zeile6.erase(0,3); iss6.str(zeile6); iss6>>l[2]; iss6.clear(); }} string zeile7; istringstream iss7; while(!myInputFile.eof()) {getline(myInputFile,zeile7); if(zeile7.find("L4:")!=string::npos) {zeile7.erase(0,3); iss7.str(zeile7); iss7>>l[3]; iss7.clear(); }} ofstream myOutputFile("Lager.txt"); if(! myOutputFile) { cerr<<"Fehler beim Öffnen der Datei"; } else { myOutputFile<<"Auflagerkraefte fuer einen gegebenen Balken"<<endl; myOutputFile<<"L1= "<<l[0]<<" L2= "<<l[1]<<" L3= "<<l[2]<<" L4= "<<l[3]<<endl; myOutputFile<<"D1= "<<d[0]<<" D2= "<<d[1]<<" D3= "<<d[2]<<endl; myOutputFile<<"G= "<<g<<endl; } for(i=0;i<3;i++) { d[i]=2*PI/360*d[i]; //Winkel in Bogenmaß umwandeln } a[0][0]=cos(d[0]); a[0][1]=cos(d[1]); a[0][2]=-cos(d[2]); a[1][0]=sin(d[0]); //Berechnungen der Matrix a[1][1]=sin(d[1]); a[1][2]=sin(d[2]); a[2][0]=sin(d[0])*l[0]; a[2][1]=sin(d[1])*l[1]; a[2][2]=sin(d[2])*l[2]; b[0]=0; b[1]=g; //Berechnungen des Vektors b[2]=g*l[3]; Lingl(a,b,f); myOutputFile<<"F1= "<<f[0]<<" F2= "<<f[1]<<" F3= "<<f[2]<<endl; } void Lingl(double a[3][3], double b [3], double f[3]) { double deta; double m[3][3]; int i,j; deta=Det(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) { m[i][j]=a[i][j]; m[0][0]=b[0]; m[1][0]=b[1]; m[2][0]=b[2]; } } f[0]=Det(m)/deta; for(i=0;i<3;i++) { for(j=0;j<3;j++) { m[i][j]=a[i][j]; m[0][1]=b[0]; m[1][1]=b[1]; m[2][1]=b[2]; } } f[1]=Det(m)/deta; for(i=0;i<3;i++) { for(j=0;j<3;j++) { m[i][j]=a[i][j]; m[0][2]=b[0]; m[1][2]=b[1]; m[2][2]=b[2]; } } f[2]=Det(m)/deta; }
-
Muss das sein?
325240 Zeilen Code mit der Meldung, dass einnichtkaum näher beschriebener Fehler unternichtkaum näher beschriebenen Umständen auftritt. Meinst du, bei solch einer Vorgabe kann ein Außenstehender dir helfen?Meine Punkte 1-4, insbesondere der genannte Logikfehler(!) in Punkt 2 gelten immer noch, bloß die angegebenen Zeilennummern haben sich verändert.