Falsche Variablen?



  • Hallo Leute,
    ich (C Anfänger) habe mal wieder ein Problem und hoffe, dass ihr mir helfen könnte. Ich habe einen Rechner Programmiert. Leider rechnet der die Eingaben nicht richtig aus. Ich vermute, dass es an den Variablen liegt, konnte bisher aber keinen Fehler finden.

    Also hier der Code:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    int prozent_schriftlich;
    int prozent_muendlich;
    int muendlicheNote;
    int ersteKlausurNote;
    float Note;
    float mdl;
    float schrtln;
    
    printf("                     Loewecksche Fehlkursformel Rechener                 \n");              // Kopfzeile
    printf("--------------------------------------------------------------------------------\n");       // **
    
    do
    {
    
    // Mündliche Note einlesen
    printf("Geben Sie die den Prozentwert der Muendlichen Note ein:   ");
    scanf("%d",&prozent_muendlich);
    
    // Schriftliche Note einlesen
    
    printf("Geben Sie die den Prozentwert der Schriftlichen Note ein: ");
    scanf("%d",&prozent_schriftlich);                                                                   //              ''
    
    printf("\n");
    
    // Wenn 100% dann Schleife verlassen
    
    if(prozent_muendlich + prozent_schriftlich == 100) {break;}
    
    printf("ERROR! Die Summe beider Werte muss 100 ergeben\n\n");
    
    } while(prozent_muendlich + prozent_schriftlich < 100);
    
    printf("Der muendliche Wert ist: %d\n",prozent_muendlich);                                        // Debugg
    printf("Der schriftlche Wert ist: %d\n",prozent_schriftlich);                                     // Debugg
    
    // Mündliche Note einlesen
    printf("Geben Sie Ihre Muendliche Note ein: ");
    scanf("%d",&muendlicheNote);
    printf("\n");
    
    // 1. Klausurnote eingeben
    printf("Geben Sie die Note Ihrer 1. Klausur ein: ");
    scanf("%d",&ersteKlausurNote);
    printf("\n");
    
    // Mündliche Note Berechnen
    mdl = (prozent_muendlich / 100) *  muendlicheNote;
    
    // Schriftliche Note Berechnen 
    schrtln = (prozent_schriftlich / 100) * ersteKlausurNote;
    
    printf("mdln: %f\n",mdl);                                                                          // Debugg
    printf("schrtkn: %f\n",schrtln);                                                                  // Debugg
    
    Note = schrtln + mdl;
    
    printf("Ihre Note ist: %d", Note);
    printf("\n");
    
    system("PAUSE");
      return 0;
    }
    

    Wäre echt super, wenn mir einer erklären könnte, was falsch ist. Viele Tutorials im Internet taugen nämlich leider nichts 😉

    Gruß Schnickalodeon



  • ...



  • Mach doch:

    } while(prozent_muendlich + prozent_schriftlich != 100);
    

    Sonst kann man z.b. auch 113% eingeben

    printf("Ihre Note ist: %d", Note);
    

    Hier muss %f statt %d hin



  • Die Bemerkungen von Swordfish (Integerdivision) ist korrekt, die Anmerkung von C-Fritze (falscher
    Schleifenabbruch) ist ebenfalls korrekt und wirkt sich hier sogar mit Ansage aus!

    Ich würde anregen den unnötigen Schleifenabbruch mit break zu meiden uns stattdessen eine
    if Abfrage mit korrektem Abbruch zu verwenden.

    Schnickalodeon schrieb:

    if(prozent_muendlich + prozent_schriftlich == 100) {break;} 
      
    printf("ERROR! Die Summe beider Werte muss 100 ergeben\n\n"); 
    
    } while(prozent_muendlich + prozent_schriftlich < 100);
    

    besser:

    if(prozent_muendlich + prozent_schriftlich != 100)
      printf("ERROR! Die Summe beider Werte muss 100 ergeben\n"); 
    
    } while(prozent_muendlich + prozent_schriftlich != 100);
    


  • Noch kürzer:

    }while((prozent_muendlich + prozent_schriftlich) != 100 &&
    printf("ERROR! Die Summe beider Werte muss 100 ergeben\n"));
    

    Allerdings auch etwas unübersichtlicher



  • Ja danke integerdivision ist wirklich keine gute Idee 😃 Programm läuft jetzt.
    Vielen,vielen Dank für die Hilfe 🙂


Anmelden zum Antworten