While schleife mit gleitkomma zahlen , wie ??



  • Hi, ich möchte ein proggi schreiben, das die Noten einliest und dann den Noten schnitt berechnet, eigentlich ganz einfach, doch bis jetzt kann ich nur die while schleife und habe noch nicht gelernt, wie man das ganze mit gleitkomme zahlen macht.

    int zahl,  summe=0;
         int nenner;
         nenner = 1;
       printf("Noten eingeben :\nBeenden der Eingabe mit 0 \n");
    
       while(1)           {
             printf("Bitte Note eingeben : ");
             scanf("%d", &zahl);
             if(zahl == 0)   
                break;        
             else
    
                summe+=zahl/nenner;
                nenner++;
                }
                printf("Dein Durchschnitt ist : %d\n", summe);
                cin.get();
    

    Auch wenn ich oben statt int zahl, int nenner... double zahl... eingebe stürzt er auch ab bei Kommazahlen, was soll cih tun, denn nur ganze Noten zu berechnen ist ja doof.
    Bitte helft mir , danke
    LostDevil 🤡 🤡



  • Du musst anstatt dem Komma ein Punkt eintippen, also so: 1.25 - das ist im Englischen so.

    Gruß



  • #include<iostream>
    
    using namespace std;
    
    int
    main ()
    {
      int    note,
             noten_anzahl=0;
      double noten_summe=0.0;
    
      cout<<"Noten eingeben :"<<endl;
      cout<<"Beenden der Eingabe mit 0"<<endl;
    
      while(1)
      {
        cout<<"Bitte Note eingeben : ";
        cin>>note;
        if(note==0) break;
    
        noten_summe+=note;
        noten_anzahl++;
      } 
    
      cout<<"Dein Durchschnitt ist : "<<noten_summe/noten_anzahl<<endl;
    
      cin.get();
    
      return 0;
    }
    


  • in C++ solltest du kein scanf() oder printf() verwenden, sondern wie Konfusius vorgezeigt hat cin/cout.

    scanf("%d", &zahl)
    

    kann auch gar nicht funktionieren wenn zahl eine Fliesskommazahl (also ein double oder ein float) ist. Also nimm lieber cin/cout, da bist du immer auf der sicheren Seite! 🙂



  • Hey anstatt z.B. "int a;" musst du "float a" eingeben float ist für kommazahlen ...

    Falls es nicht funzt lass es mich wissen un wenns geht stell den code auf diese seite, auch ich bin schüler und könnte das prog gebrauchen ...

    mawu



  • So, habe jetzt den Text von Confusius verwendet.
    Es funzt, mache noch kleine fein Umstellungen und dann lade ich das ganze für mawu mal hoch.
    Danke noch mal
    Lostdevil



  • Das break in der while schleife ist ziemlich unnötig und leicht wegzulassen. damit du dir gleich "schönen" code angewöhnen kannst:

    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
      float  note = 0.0,
             noten_anzahl=0.0;
      double noten_summe=0.0;
    
      cout<<"Noten eingeben :"<<endl;
      cout<<"Beenden der Eingabe mit -1"<<endl;
    
      while(note != -1.0)
      {
        cout<<"Bitte Note eingeben : ";
        cin>>note;
    
        if(note== -1.0) //ist später mit der for-schleife einfacher
        {;}
        else
        {
        noten_summe+=note;
        noten_anzahl++;
        }
      }
    
      cout<<"Dein Durchschnitt ist : "<<noten_summe/noten_anzahl<<endl;
    
      cin.get();
    
      return EXIT_SUCCESS;
    }
    


  • Also hier ist ma mein Proggie, nichts tolles, abba es funzt

    #include <iostream>
    #include <fstream>
    using namespace::std;
    
    int main ()
    {
    
         double    note, 
             noten_anzahl=0; 
      double noten_summe=0.0; 
      cout<<"Willkommen bei Noten Rechner v.1.1 !!"<<endl;
    
      cout<<"Noten eingeben :"<<endl; 
      cout<<"Beenden der Eingabe mit 0"<<endl; 
    
      while(1) 
      { 
        cout<<"Bitte Note eingeben : "; 
        cin>>note; 
        if(note==0) break; 
    
        noten_summe+=note; 
        noten_anzahl++ ; 
                      }
                        cout<<"Dein Durchschnitt ist : "<<noten_summe/noten_anzahl<<endl; 
                cin.get();
                printf("Bitte gib ein, fuer welches Fach diese Noten sind\n(E fuer Englisch, D fuer Deutsch, F fuer Französisch...)");
                signed char w;
                cin>>w; 
    
       cin.get();
       cin.get();
       ofstream verwaltung ("Noten.txt" ); 
          verwaltung<<"\n"<<w<<" : "<<noten_summe/noten_anzahl<<"\n";
    verwaltung.close();
       printf("Dein Durchschnitt wurde in der Noten.txt gespeichert\n");   
       printf("  Production by LostDevil \n\n\n");
    
    }
    

    Viel Spaß dabei
    Lostdevil



  • LostDevil schrieb:

    Also hier ist ma mein Proggie, nichts tolles, abba es funzt

    #include <iostream>
    #include <fstream>
    using namespace::std;
    
    int main ()
    {
    
       
       
       
       
         double    note, 
             noten_anzahl=0; 
      double noten_summe=0.0; 
      cout<<"Willkommen bei Noten Rechner v.1.1 !!"<<endl;
      
      cout<<"Noten eingeben :"<<endl; 
      cout<<"Beenden der Eingabe mit 0"<<endl; 
    
      while(1) 
      { 
        cout<<"Bitte Note eingeben : "; 
        cin>>note; 
        if(note==0) break; 
    
        noten_summe+=note; 
        noten_anzahl++ ; 
                      }
                        cout<<"Dein Durchschnitt ist : "<<noten_summe/noten_anzahl<<endl; 
                cin.get();
                printf("Bitte gib ein, fuer welches Fach diese Noten sind\n(E fuer Englisch, D fuer Deutsch, F fuer Französisch...)");
                signed char w;
                cin>>w; 
       
       cin.get();
       cin.get();
       ofstream verwaltung ("Noten.txt" ); 
          verwaltung<<"\n"<<w<<" : "<<noten_summe/noten_anzahl<<"\n";
    verwaltung.close();
       printf("Dein Durchschnitt wurde in der Noten.txt gespeichert\n");   
       printf("  Production by LostDevil \n\n\n");
    
    }
    

    Viel Spaß dabei
    Lostdevil

    warum nimmst du C# tags?



  • Was davon sind denn C# Tags, habe von C# gargargar keine Ahnung.??
    Lostdevil 🙄


Anmelden zum Antworten