Warum wird die while-Schleife nicht durch laufen?



  • Hallo!

    Warum wird die while-Schleife nicht durchlaufen? Was habe ich falsch gemacht?

    Viele Grüße
    pmw

    #include <iostream>
    #include <vector>
    #include <cstdio>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
      double DTage = 0;
      char STage[18]; /* Double = 15 Stellen + Vorzeichen + Dezimaltrennzeichen + Null-Zeichen */
    
      while (DTage <= 0) // <-- wird nicht einmal durchlaufen :(
      {
        printf("Bitte geben Sie Laenge des Jahres in Tagen (> 0) an: ");
        gets(STage);
        DTage = atof(STage);
        printf("%f\n", DTage);
      } 
    
      printf("Druecken Sie eine beliebige Taste um das Programm zu beenden ...\n");
      getchar();
      return 0;
    
    }
    


  • gib mal "DTage" einen anderen Wert.

    Ich glaube, dass durch deine Vergabe der Null die Schleife nicht durchlaufen werden kann.



  • cHillb3rT schrieb:

    Ich glaube, dass durch deine Vergabe der Null die Schleife nicht durchlaufen werden kann.

    ???

    Zur Frage: Keine Ahnung was du da machst. Die Schleife MUSS beim 1. Mal durchlaufen werden.



  • interpreter schrieb:

    cHillb3rT schrieb:

    Ich glaube, dass durch deine Vergabe der Null die Schleife nicht durchlaufen werden kann.

    ???

    Zur Frage: Keine Ahnung was du da machst. Die Schleife MUSS beim 1. Mal durchlaufen werden.

    Ja an sich stimmt das.... vielleicht meint er auch nach dem ersten Durchlauf. Ich bin mir da auch net so ganz sicher.



  • Die Schleife läuft leider gar nicht durch! Auch nicht beim ersten mal.



  • haste ganz oben bei den includes die "H's" vergessen ?



  • @pmw

    k. A. was du hast, die Schleife wird doch durchlaufen! Das Programm is zwar sinnlos, aber das, was es tun sollte, tut es auch!

    Was für nen Compiler nimmst du her?
    Ich habs unter VisualStudio 6.0 laufen lassen! Keine Probleme!

    @Chillbert
    Von mir aus können wir über icq schon Daten austauschen, nur weiss ich die nummer nicht auswendig. Ich werd sie beim nächsten Beitrag, den ich zu Hause schreibe, mit dazu posten. Bis dann in icq!

    Chiao



  • ich habe den Code so wie er dasteht bei mir getestet und da funzt er. keine Ahnung was bei dir los ist



  • cHillb3rT schrieb:

    haste ganz oben bei den includes die "H's" vergessen ?

    Nein, hat er nicht. Das passt schon so. Wie gesagt, der Code ist in Ordnung und die Schleife muss beim 1. mal betreten werden.



  • nur mal so ebenbei, wenn du bei ANSI C bist, haben die headerfiles die du verwendest nichts zu suchen



  • Fehler gefunden 🙂

    Das Problem lag wohl am IDE oder Compiler. Ich habe jetzt Dev-C++ komplett deinstalliert und wieder neu aufgespielt. Jetzt klappt es bei mir auch einwandfrei.



  • Hallo,

    es ist immer problematisch eine double und eine int Zahl zu vergleichen.
    Da double Zahlen gerundet werden (Weil sie als Mantisse und Exponent gespeichert werden). So kann es sein, dass z.B 7 nicht als 7 sondern
    6.999999999999999999... oder 7.000000000000000000000001 gespeichert wird.

    Aber eigentlich kann dieses Problem nicht bei 0 auftreten.
    Vielleicht ist Dein Compiler hier anders implementiert und macht auch bei 0 Ärger!?



  • Na dann bin ich ja froh 😉


Anmelden zum Antworten