Kommazahlen verhindern



  • Hi
    gibt es die möglichkeit kommazahlen zu verhindern?
    d.h. wenn man beim "cin" eine kommazahl eingibt dann soll eine ferhlermeldung erscheinen?

    Ich programmiere mit Dev-c++

    grüße, jens



  • keine ahnung... aber du könntest die eingabe modulo 1 prüfen (iZahl%1).

    quasi

    if(iZahl%1 == 0)
       //Ganzzahl
    else
       //Kommazahl
    


  • hmm du könntest doch auch versuchen die zahl in eine integral var zu casten indem du nen (int) vorshcreibst oder nicht?
    also:

    float zahl;
        cin >> zahl;
        cout << (int)zahl << endl;
    

    vieleicht hilft das ja



  • hi
    also es geht um dieses spielchen

    #include <iostream.h>
    
    using namespace std;
    
    int main() {
      int versuch=0, zahl, tipp;
    
       cout<<"...::: Ratespiel :::...\n\n";
      anfang:;
      cout<<"Geben sie die zu Erratene Zahl ein: ";
      cin>>zahl;  
      if (zahl > 100){
      cout<<"Die Zahl ist groesser als 100 bitte nochmal eingeben!\n\n";
      goto anfang;
      }  
    
      if(zahl%1 == 0){
                cout<<"Eine Ganze Zahl";
                }            
       //Ganzzahl
      else  {
                cout<<"Eine Komma-Zahl";
                }   
       //Kommazahl
    
      cout<<"Nun duerfen sie Raten, geben sie Ihren Tipp ein: ";
      tippeingabe:;
      cin>>tipp;
    
      if (tipp > 100){
      cout<<"Dumpfbacke, die Zahl ist nicht groesser als 100!\nIhr neuer Tipp: ";
      goto tippeingabe;
      } 
      if (zahl == tipp){
      cout<<"Richtig ";
      versuch=versuch+1;
      goto ende;
      } 
      if (zahl > tipp){
      cout<<"Die Zahl ist leider zu niedrig, ihr neuer Versuch: ";
      versuch=versuch+1;
      goto tippeingabe;
      }   
      if (zahl < tipp){
      cout<<"Die Zahl ist leider zu hoch, ihr neuer Versuch: ";
      versuch=versuch+1;
      goto tippeingabe;
      }         
    
      ende:;
      cout<<"Sie haben die Zahl beim "<<versuch<<"ten Versuch erraten\n\n";
    
      system("PAUSE");
      return 0;
    }
    

    ich probier mal eben weiter.

    danke schomal für die antworten.
    theschaaf



  • wenn du

    int zahl;
    cin >> zahl;
    

    machst, dann ist zahl immer ganzzahlig, egal was du eingegeben hast.

    versuch doch ma

    float zahl;
    cin >> zahl;
    if(zahl - floor(zahl) > 0.0000001f)
    cout << "Komazahl!" << endl;
    else
    cout << "ganze zahl" << endl;
    


  • was ist denn floor, welche funktion hat das?
    soll ich das nochma neu ähm "deklarieren"



  • theschaaf schrieb:

    was ist denn floor, welche funktion hat das?
    soll ich das nochma neu ähm "deklarieren"

    steht in der MSDN.

    mit der modulo lösung kannst du halt float verwenden und prüfen ob eine ganze oder eine kommazahl angegeben wurde. bei int kannst du dir die abfrage sparen, weil int eh keine kommastellen hat.



  • DanielusITF schrieb:

    mit der modulo lösung kannst du halt float verwenden und prüfen ob eine ganze oder eine kommazahl angegeben wurde.

    Was für einen tollen Compiler hast du denn, der Modulo mit Fließkommatypen erlaubt?



  • MFK schrieb:

    DanielusITF schrieb:

    mit der modulo lösung kannst du halt float verwenden und prüfen ob eine ganze oder eine kommazahl angegeben wurde.

    Was für einen tollen Compiler hast du denn, der Modulo mit Fließkommatypen erlaubt?

    uff, das kommt davon wenn man es nicht vorher ausprobiert. bitte um entschuldigung. bin in c++ auch noch recht frisch. fand die lösung mit modulo irgendwie "cool" 😃 naja, dann eben doch mit float in int casten 🙂



  • hey
    es funktioniert jetzt so

    #include <iostream.h>
    
    using namespace std;
    
    int main() {
      float zahl;
      double versuch=0,  tipp, zahl2; 
      cout<<"...::: Ratespiel :::...\n\n";
      anfang:;
      cout<<"Geben sie die zu Erratene Zahl ein: ";
      cin>>zahl;  
    
      if (zahl > 100){
      cout<<"Die Zahl ist groesser als 100 bitte nochmal eingeben!\n\n";
      goto anfang;
      }  
    
      if(zahl - floor(zahl) > 0.0000001f) {
      cout << "Komazahl so gehts nicht!" << endl; 
      goto anfang;}
    
      tippeingabe:;
      cout<<"\n\n\nNun duerfen sie Raten, geben sie Ihren Tipp ein: ";
    
      cin>>tipp;
    
      if(tipp - floor(tipp) > 0.0000001f) {
      cout << "Komazahl so gehts nicht!" << endl; 
      goto tippeingabe;}
    
      if (tipp > 100){
      cout<<"Dumpfbacke, die Zahl ist nicht groesser als 100!\nIhr neuer Tipp: ";
      goto tippeingabe;
      }  
    
      if (zahl == tipp){
      cout<<"Richtig ";
      versuch=versuch+1;
      goto ende;
      } 
      if (zahl > tipp){
      cout<<"Die Zahl ist leider zu niedrig, ihr neuer Versuch: ";
      versuch=versuch+1;
      goto tippeingabe;
      }   
      if (zahl < tipp){
      cout<<"Die Zahl ist leider zu hoch, ihr neuer Versuch: ";
      versuch=versuch+1;
      goto tippeingabe;
      }         
    
      ende:;
      cout<<"Sie haben die Zahl beim "<<versuch<<"ten Versuch erraten\n\n";
    
      system("PAUSE");
      return 0;
    }
    

    aber was genau macht denn floor? es funktioniert, aber ich weiss nicht so genau warum 💡 .
    kann mir das vll jemand ein bisschen erklären?

    grüße, theschaaf



  • *autsch* GoTo's



  • #teer und federn bereitstell#


Anmelden zum Antworten