Fufialk Geschrieben 25. November 2005 Geschrieben 25. November 2005 Es ist mal wieder aussenstehender Rat gefragt, der mich auf den richtigen Weg weißt. Ich lese verschiedene Werte aus einer Datei ein, führe eine Berechnung durch, und speicher die Werte ab. Jetzt soll eine Kontrollfunktion hinzukommen, da ein Wert auf monotonen Anstieg überprüft werden soll. Ich weiß, an welcher Stelle dieser Wert steht. Ich lese nun den ersten Wert ein, führe die Berechnung durch, lese den zweiten Wert ein, führe die selbe Berechnung durch, und Vergleiche. Im nächsten Schritt, wird Wert 2 mit dem nächsten verglichen. Das ganze läuft über eine Schleife: int u = 74; int z = 0; for (i = 0; i < Max; i++) { int t = z+2; ifl.seekg(t*sizeof(short), ios::beg); ifl.read((char*)&timechecka, sizeof(int)); ifl.seekg(u*sizeof(short), ios::beg); ifl.read((char*)&timecheckb, sizeof(int)); timechecka = (timechecka + 3600)/86400 + 25569; timecheckb = (timecheckb + 3600)/86400 + 25569; timecheckc = (zeit + 3600)/86400 + 25569; bool timecheck = (timechecka <= timecheckb && timecheckb <= timecheckc); switch (timecheck) { case true: /*Verarbeitung*/ z = z + 72; u = u+72; break; case false: u = u + 72; break } } [/PHP] Beim ersten Durchlauf der Schleife passiert folgendes: t = 2 => [b]timechecka[/b] zuweisen u = 74 => [b]timecheckb[/b] zuweisen double Berechnung, [color=Red]hier tritt jetzt der Fehler auf[/color] [b]timecheckb[/b] wird falsch berechnet: timechecka = 25569 timecheckb = 8.57189 e+ 262 timecheckc = 38621 Zweiter Durchlauf: t = 74=> [b]timechecka[/b] zuweisen u = 146 => [b]timecheckb[/b] zuweisen double Berechnung: timechecka = 2.56 e+04 timecheckb = 9.92 e+257 hier wird der selbe Wert richtig bestimmt (auf die Zähler (u & t) achten) denn [b]timechecka[/b] ist hier der selbe Wert, wie [b]timecheckb[/b] im ersten Schleifendurchlauf. Habe ich jetzt alle verwirrt? Wer sieht meinen Schreib/Denkfehler?
Klotzkopp Geschrieben 25. November 2005 Geschrieben 25. November 2005 Sind in der Datei int- oder double-Wert gespeichert? Wenn es int-Werte sind, musst du in int-Variablen einlesen und den Wert einer double-Variablen zuweisen. Wenn es double-Werte sind, musst du mit sizeof(double) einlesen. Du kannst nicht einfach int-Werte in double-Variablen einlesen, weil die binäre Repräsentation (und mit hoher Wahrscheinlichkeit auch die Größe) unterschiedlich ist. Nachtrag: Deine Umrechnung kannst du auch weglassen. Das ist eine lineare Funktion mit positivem linearen Koeffizienzen. Da du dieselbe Funktion auf alle drei Werte anwendest, ändert sich an deiner Bedingung nichts, wenn du sie weglässt.
Fufialk Geschrieben 25. November 2005 Autor Geschrieben 25. November 2005 Ja, vielen Dank, hatte es jetzt auch schon bemerkt und umgestellt. Manchmal reicht es eben schon, wenn man einfach jemanden fragt.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden