Hilfe bei meinen Programm



  • Hi,

    ich hab ein Problem.
    Ich soll ein Programm schreiben mit mehreren Bedingungen.
    Nur folgende Bedingung weiß ich nicht umzusetzen:
    2. Das Programm soll die Berechnung von der Reihe solange fortsetzen, bis
    sich das Ergebnis vom vorhergehenden Schritt verglichen mit dem aktuellen
    Ergebnis erst in der dritten Stellen hinter dem Komma unterscheidet.
    Das Programm ist in der Sprache c2 geschrieben, ich bitte dies zu berücksichtigen.
    Es wäre echt nett wenn Ihr mir sagt wie ich das machen kann.

    Mit freundl.Grüßen,
    Bloemekke



  • und was genau ist c2? Hab von der Programmiersprache noch nie was gehoert und auch wikipedia weiss nichts darueber ...



  • Vielleicht die weiterentwicklung von C1, das hier seit neuestem einige benutzen? 😕



  • Bloemekke schrieb:

    Nur folgende Bedingung weiß ich nicht umzusetzen:
    2. Das Programm soll die Berechnung von der Reihe solange fortsetzen, bis
    sich das Ergebnis vom vorhergehenden Schritt verglichen mit dem aktuellen
    Ergebnis erst in der dritten Stellen hinter dem Komma unterscheidet.

    vielleicht so:

    if (fabs(vorher-jetzt) < 0.001)
    {
       // stop
    }
    else
    {
      // weitermachen
    }
    

    🙂



  • Hm, also Fliesskommazahlen sind nicht so einfach zu vergleichen.
    Ich wuerde hier eher den Weg gehen, die Zahl kurzserhand in int oder long umzuwandenl. Dabei ist aber auch wieder derauf zu achten, dass dabei Rundungsfehler auftreten koennen. Da hilft aber die Kontante FLT_EPSILON die in float.h definiert ist.
    Ich hab z.B. Mal folgendes geschrieben:

    input = (int)((atof(argv[1]) * 100.0) + FLT_EPSILON);
    

    Ist vielleicht nicht die eleganteste Methode, aber danach kann man die Ganzzahlen ganz einfach vergleichen und muss sich nicht um die Kommastellen gedanken machen.



  • moe szyslak schrieb:

    Hm, also Fliesskommazahlen sind nicht so einfach zu vergleichen.

    ich halte mich auch eher von floats fern, aber ich glaub' grösser/kleiner-vergleiche kann man machen, nur == zickt rum, wegen dieser blöden ungenauigkeit von floats.
    🙂



  • moe szyslak schrieb:

    Hm, also Fliesskommazahlen sind nicht so einfach zu vergleichen.
    Ich wuerde hier eher den Weg gehen, die Zahl kurzserhand in int ...Ganzzahlen ganz einfach vergleichen und muss sich nicht um die Kommastellen gedanken machen.

    Es ist explizit nach einem Float- Vergleich gefragt, ob die dritte Nachkommastelle aber echt 1/1000el sein soll - who knows 😕 Wird wohl so gemeint sein, aber außer mit "!=" und "==" gibt es bei float/double kein Problem, deswegen brauchst Du nichts zu wandeln, moe, sonst droht verschärftes Nachdenken über Nachkommastellen (in welchem Zahlensystem?). 😉



  • vielen dank für die Hilfe,

    werde es versuchen mal umzusetzen.


Anmelden zum Antworten