sem1985 Fragethread



  • Hi,
    ich bin neu hier und begrüße erst mal alle in diesem Forum. Ich habe mir die Freiheit genommen, einen Thread für alle meine Fragen zu machen, da mit Sicherheit noch mehr Fragen kommen werden. Und dass ich nicht jedesmal einen neuen Thread eröffnen muss, benutz ich immer diesen hier 🙂
    Habe erst vor kurzem angefangen mit C und bin noch ein Anfänger.

    Nun zu meiner ersten Frage. Ich habe ein Übungsprogramm geschrieben, bei dem man sein Idealgewicht berechnen lassen kann. Allerdings hab ich da ein Problem. Die zweite Rechnung, in welcher [lbs] in [kg] umgerechnet wird, klappt. Nur die erste und wichtigste Rechnung geht nicht. Egal was ich als Körpergröße angebe, es kommt immer -196.00[lbs] dabei heraus.

    Als Compiler verwende ich den Dev C++

    Ich poste am Besten mal hier meinen ganzen Code, ich hoffe ihr findet den Fehler. Ich mach da jetzt schon nen halben Tag rum, wegen so einer kleinen Aufgabe^^
    Nicht wundern wegen der Farben, hab da noch experimentiert 😃
    (Forensuche hab ich schon benutzt, aber nix gefunden)

    /* Idealgewichtrechner
       Programmiert von
       Salvatore E.M.
    */
    
    #include <stdio.h>
    #include <windows.h>
    
    #define schwarz 0
    #define blau 1
    #define gruen 2
    #define rot 4
    #define braun 6
    #define hellblau 9
    #define hellgruen 10
    #define hellrot 12
    #define gelb 14
    #define weiss 15 
    
    int Farbe(int Text, int Hintergrund)
    {
    int Colour=Text+16*Hintergrund;
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),Colour);
    }
    
    int main()
    {
        int k, g;
        float i = (k-100)*2;
        float e = i * 0.454;
    
        system("color F8");
    
        // Programminfo
        Farbe(hellrot,weiss);
        printf("*******************************\n");
        printf("***   ");
        Farbe(schwarz,weiss);
        printf("Idealgewichtrechner");
        Farbe(hellrot,weiss);
        printf("   ***\n");
        printf("***    ");
        Farbe(schwarz,weiss);
        printf("Programmiert von");
        Farbe(hellrot,weiss);
        printf("     ***\n");
        printf("***     ");
        Farbe(schwarz,weiss);
        printf("Salvatore E.M.");
        Farbe(hellrot,weiss);
        printf("      ***\n");
        printf("*******************************\n");
        printf("\n\n");
    
        // Angaben machen
        Farbe(gruen,weiss);
        printf("Bitte geben Sie ihre Koerpergroesse ein [cm]:  ");
        scanf("%i", &k);
        //printf("Bitte geben Sie ihr aktuelles Koerpergewicht ein (in kg):  ");
        //scanf("%i", &g);
    
        // Ausgabe
        Farbe(blau,weiss);
        printf("\n\n");
        printf("Ihr Idealgewicht betraegt: %.2f[lbs]\n", i);
        printf("Das waeren %.2f[kg]", e);
        printf("\n\n");
        Farbe(schwarz,weiss);
        printf("Vielen Dank dass Sie meinen Rechner benutzt haben.\n\n\n");
    
        system("PAUSE");
    
        getch(); return 0;
    }
    


  • sem1985 schrieb:

    Hi,
    ich bin neu hier und begrüße erst mal alle in diesem Forum.

    Hallo :xmas1:

    In Zeile 30 benutzt du zur Berechnung von i die Variable k, obwohl du k nicht initialisiert hast. Stackvariablen wie k werden aber nicht explizit initialisiert, es steht also irgend ein Müll in k drinnen und folglich steht dann auch in i irgend ein Müll. Ein einigermaßen guter Compiler sollte da eigentlich ein Warning ausgeben.

    Genereller Tipp: Du solltest deine Variablen sinnvoll benennen. So eine Zeile wie scanf("%i", &k); hab keinerlei Aussage, wohingegen man den Sinn von scanf("%i", &koerperGroesseCM); sofort verstehen würde.



  • this->that schrieb:

    Hallo :xmas1:

    In Zeile 30 benutzt du zur Berechnung von i die Variable k, obwohl du k nicht initialisiert hast. Stackvariablen wie k werden aber nicht explizit initialisiert, es steht also irgend ein Müll in k drinnen und folglich steht dann auch in i irgend ein Müll. Ein einigermaßen guter Compiler sollte da eigentlich ein Warning ausgeben.

    Danke dein Tipp hat mir sehr geholfen. Habe jetzt die 2 Berechnungen einfach zwischen die Datenein- und Datenausgabe verschoben und jetzt klappts 🙂 Hätt ich eigentlich selber drauf kommen müssen, da dies ja erst berechnet werden kann, nachdem man was eingegeben hat 🙄

    this->that schrieb:

    Genereller Tipp: Du solltest deine Variablen sinnvoll benennen. So eine Zeile wie scanf("%i", &k); hab keinerlei Aussage, wohingegen man den Sinn von scanf("%i", &koerperGroesseCM); sofort verstehen würde.

    Habe mir diesen Tipp gleich zu Herzen genommen und umgesetzt. Danke 🙂

    Klasse Forum. Hier wird einem schnell geholfen 😃


Anmelden zum Antworten