Werte aus txt datei lesen und anwenden
-
Hallo zusammen,
ich möchte verschiedene Werte aus einer txt Datei lesen und dann die mit ein anderen dividieren.
Die Auslesen funktioniert ja auch gang gut, aber ich krieg das nicht hin die zu dividieren.
Das ist meine Text datei:NumBoxSize = 1 BoxSizeX = 0.002000 BoxSizeY = 0.002000 BoxSizeZ = 0.001250 NumDummyElements = 1 DummySizeX = 0.000400 DummySizeY = 0.000400 DummySizeZ = 0.000250So speichere ich bzw. lese ich diese Werte aus. in der Klasse Simmulator.cpp
bool CSimulator::setParams(std::map<CString,CString> ¶ms) { if(params.find(_T("DummySizeX")) != params.end()) m_ptDummyElementSize[X_AXIS] = CConvert::atof(params[_T("DummySizeX")].c_str()); if(params.find(_T("DummySizeY")) != params.end()) m_ptDummyElementSize[Y_AXIS] = CConvert::atof(params[_T("DummySizeY")].c_str()); if(params.find(_T("DummySizeZ")) != params.end()) m_ptDummyElementSize[Z_AXIS] = CConvert::atof(params[_T("DummySizeZ")].c_str()); if(params.find(_T("BoxSizeX")) != params.end()) parseListToDoubleArray(arrBoxSizes[X_AXIS], params[_T("BoxSizeX")]); if(params.find(_T("BoxSizeY")) != params.end()) parseListToDoubleArray(arrBoxSizes[Y_AXIS], params[_T("BoxSizeY")]); if(params.find(_T("BoxSizeZ")) != params.end()) parseListToDoubleArray(arrBoxSizes[Z_AXIS], params[_T("BoxSizeZ")]);und in der Klasse DataManager.cpp muss ich die sachen mit ein anderen dividieren. Ich dachte so
// ptMin[X_AXIS] = CSimulator::S()->m_arrBoxSizes[X_AXIS] / CSimulator::S()-> m_ptDummyElementSize[X_AXIS];aber der Operator "7" passt nicht. Wie kann ich denn z.b BoxSizeX = 0.002000 / DummySizeX = 0.000400 machen? Wo ist denn der Fehler in meinem Code

THX
-
Was ist Operator "7"?
Und wo ist das Problem mit
// ptMin[X_AXIS] = CSimulator::S()->m_arrBoxSizes[X_AXIS] / CSimulator::S()-> m_ptDummyElementSize[X_AXIS];Meine Vermutung: irgendwo speicherst du Werte als Integers anstelle von Doubles.
-
ohh nicht 7 sondern /.
ne das mache ich nicht

ist alles als double gespeichert.std::vector<double> arrBoxSizes[NUM_AXIS];
-
"passt nicht" ist keine Fehlerbeschreibung.
-
Wenn du dividieren willst, ist "/" an sich schon richtig.
-
Ich würde ja den fehler beschreiben, aber ich selbst sehe keinen.
Ich kriege error , dass / stimmt mit operanden nicht über ein.
Das ist alles was ich kriege.
-
guguli schrieb:
Ich würde ja den fehler beschreiben, aber ich selbst sehe keinen.
Ich kriege error , dass / stimmt mit operanden nicht über ein.
Das ist alles was ich kriege.Nein, das ist nicht alles, was du bekommst. Die Meldung ist nämlich viel länger und enthält die beteiligten Typen. Und ich wette, da wird, entgegen deiner Versicherung, nicht double und double stehen.
-
einen Compiler, der Fehlermeldungen wie "error , dass / stimmt mit operanden nicht über ein" ausspuckt, sollte man nicht verwenden. Ich hätte jedenfalls kein großes Vertrauen, dass dieser sauber programmiert ist.
-
Ich benutze visual studio 2010 express.
Error:kein "/"-Operator stimmt mit diesen Operanden überein. ist die korrekte Meldung.
-
guguli schrieb:
Ich benutze visual studio 2010 express.
Error:kein "/"-Operator stimmt mit diesen Operanden überein. ist die korrekte Meldung.aber bestimmt nicht die vollständige...
-
http://www.c-plusplus.net/forum/304133
Als Minimum möchten wir sehen:
- die Deklarationen der am Ausdruck beteiligten Variablen
- die Definitionen der Typen dieser Variablen
-
ich vermute, es muss
*ptMin[X_AXIS] = CSimulator::S()->m_arrBoxSizes[X_AXIS] / *(CSimulator::S()->m_ptDummyElementSize[X_AXIS]);heißen, um den Compiler zu befriedigen.
Und ich vermute weiter, dass es zur Laufzeit zum Crash kommt.
