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? Zitieren
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. Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.