Programm.exe funktioniert nicht mehr.



  • Hallo!
    Ich habe mir erst vor einer Woche C-Programmiern von Anfang an von Helmut Erlenkötter gekauft und habe nun schon einige Kapitel( bis Arrays) durchgearbeitet. Um den Großteil des Gelernten noch einmal eigenhändig umzusetzten also abseits der Übungen im Buch, dachte ich mir ich könnte ein Programm erstellen, welches die Temperatur jedes Tages eines ganzen Jahres abfrägt und schlussendlich die Monatsdurchschnitte und den Jahresdurchschnitt ausgibt.

    Alllerdings funktioniert das Programm nicht. Leider wird mir weder beim Compilen noch beim Debuggen ein Fehler angezeigt. Sobald ich das Programm allerdings starte, lässt es mich noch die Jahreszahl eingeben, doch darauf kommt von Windows eine Meldung, dass das Program nicht mehr funktioniert und es wird nach einer Lösung gesucht. Ich habe es auch schon selbst mehrmals nach Fehlern durchsucht, doch konnte ich leider nicht den ausschlaggebenden finden.

    Bitte helft mir bzw. gebt mir einen Hinweis damit ich den Fehler selbst finden kann! Danke im Voraus!

    int jahr,i=0,j,k,tage=365;
        float tag[12][31],j_summe=0,m_durchschnitt[12];
        printf("\n\t\tTagestemperaturen\n");
        printf("\nBitte Jahr eingeben:\t\t");
        scanf("%i",jahr);
        for(i=0;i<=11;i++) {
                           m_durchschnitt[i]=0.00;
                           switch(i) {
                                     case 1: if(((jahr%100)%4)&&(jahr%400)) k=28;
                                             else k=28, tage=366;
                                     break;
    
                                     case 3:
                                     case 5:
                                     case 8:
                                     case 10: k=30;
                                     break;
    
                                     default: k=31;
                                     }
                            for(j=0;j<=k-1;j++) {
                                              printf("\nBitte Temperatur des %i.%i.%i eingeben:\t\t",i+1,j+1,jahr);
                                              scanf("%f",&tag[i][j]);
                                              m_durchschnitt[i]+=tag[i][j];
                                              j_summe+=tag[i][j];
                                              }
                            m_durchschnitt[i]/=j+1;   
                           }
    
       for(i=0;i<=11;i++) {
                          printf("\nDie durchschnittliche Temperatur im %i.Monat des Jahres %i betrug %.2f°C.",i+1,jahr,m_durchschnitt[i]);
                          }                                            
       printf("\n\nDie durchschnittliche Temperatur im Jahr %i betrug %.2f°C.",jahr,j_summe/tage);
    


  • 6peg schrieb:

    C-Programmiern von Anfang an von Helmut Erlenkötter gekauft

    1.Fehler

    6peg schrieb:

    int jahr,i=0,j,k,tage=365;
        scanf("%i",jahr);
    

    2.Fehler

    6peg schrieb:

    printf("\nBitte Temperatur des %i.%i.%i eingeben:\t\t",i+1,j+1,jahr);
    

    3.Fehler



  • 1.) Danke für die schnelle Hilfe und entschuldigt bitte, dass mir der 2.Fehler nicht selbst aufgefallen ist.Danke auch für den Hinweis auf den 3. Fehler, ich denke der wäre mir schlussenldich bei einem Porbelauf aber sowieso aufgefallen.

    2.)zu Fehler Nummer 1: Bin mit dem Buch eigentlich sehr zufrieden, wobei ich natürlich keine Vergleichsbasis habe. Auch das Feedback im Internet ist nicht schlecht, aber natürlich, wie bei fast jedem Buch, geteilt. Zumindest habe ich irgendwo gelesen,dass es für den Einstieg empfehlenswert sei. Wird natürlich nicht mein einziges Buch über C bleiben, aber ich dachte mir zum EInstieg ist eine etwas zugänglichere Lektüre vielleicht nicht verkehrt, oder liege ich damit total falsch?


  • Mod

    6peg schrieb:

    2.)zu Fehler Nummer 1: Bin mit dem Buch eigentlich sehr zufrieden, wobei ich natürlich keine Vergleichsbasis habe. Auch das Feedback im Internet ist nicht schlecht, aber natürlich, wie bei fast jedem Buch, geteilt. Zumindest habe ich irgendwo gelesen,dass es für den Einstieg empfehlenswert sei. Wird natürlich nicht mein einziges Buch über C bleiben, aber ich dachte mir zum EInstieg ist eine etwas zugänglichere Lektüre vielleicht nicht verkehrt, oder liege ich damit total falsch?

    Das Problem ist, dass du dir schlechte Praktiken angewöhnst (aka fehleranfälliger, unwartbarer Code), wenn du von einem schlechten Lehrer lernst. Die wirst du nur ganz, ganz schwer wieder los. Denn es ist leider so, dass auf dem deutschen Fachbuchmarkt anscheinend Bücher vom Fließband dominieren, bei denen der Autor höchstens ein paar Monate eigener Recherche reingesteckt hat. Dabei würde man doch gerade von einem Lehrbuch hoffen, dass es von jemandem mit echtem Durchblick geschrieben wird, nicht von einem fortgeschrittenen Anfänger.

    Zu diesem konkrete Buch fällt mir gerade nichts ein, aber irgendwie habe ich den Namen Helmut Erlenkötter negativ in Erinnerung. Vielleicht wirklich von diesem Buch her. Seine Publikationsliste verheisst jedenfalls nichts zu gutes: "C von Anfang an", "C++ von Anfang an", "Java von Anfang an", alle erschienen innerhalb von weniger als 2 Jahren. Entweder ist der Mann ein wahrhaftes Multigenie oder das ist 3x das gleiche Buch, wobei jeweils printf durch cout/System.out.println oder umgekehrt ersetzt wurde.



  • 6peg schrieb:

    Leider wird mir weder beim Compilen noch beim Debuggen ein Fehler angezeigt.

    Dann achte auf die Warnungen.
    Dies Art von Fehler kann der Compiler erkennen, gibt sie aber als Warnung aus.

    Schalte den Warnlevel auf Maximum.
    Da du nicht angegeben hast, welchen Compiler/IDE du nutzt, kann ich dir auch keiner sagen wo du das machen kannst.



  • Wo hat er denn da fehler gemacht? Ich kann nur etwas c++ aber soweit ich weiß passt das doch alles so mit dem %i



  • &jahr statt jahr ...



  • Hi,

    wenn man ernsthaft C++ programmieren lernen will, sollte man sich möglichst gleich den Stroustup zulegen. Irgendwann wird man ihn garantiert benötigen (versprochen) und dann kann man ihn auch gleich kaufen und es danach richtig lernen.

    Gruß Mümmel


Log in to reply