Fehlerabfragung eingabe von buchstaben und Kommazahlen



  • Hallo,

    Hab ein c++ Programm geschrieben bei dem ein Unterprogramm void Zahlen_einlesen besteht. Mein Problem ist das mein Programm nur die Eingabe negativer Zahlen abfängt. Es wäre nicht schlecht wenn ich auch noch Buchstaben und Kommazahlen abfangen könnte.
    Habs probiert aber nicht hinbekommen.
    Hab hier mein Programmteil vom Zahlen_einlesen angehängt.
    Wäre nicht schlecht wenn mir jemand helfen könnte.

    mfg

    Bjoern

    void Zahlen_einlesen()

    double j;
    {
    char ch;

    do
    {
    cout<< " Ihre Eingabe Bitte:\n\n";

    cin>>j;
    if (j < 0)
    {
    cout<<" Falsche Eingabe!!! Bitte erneut eingeben!!!\n";
    continue;
    }
    cout << "\n Ist Ihre Eingabe korrekt? (j/n)(Bei n(nein) Erneute Eingabe
    moeglich.\n\n";
    cout<<" Eingabe (j/n):";
    cin >> ch;

    }
    while (ch != 'j');
    }



  • Ich würds mit std::string, std::stringstream (aus <sstream>) und isdigit() (aus cctype) machen.



  • Siehe FAQ (Konsolen FAQ). SideWinder hat dort eine sehr gute Funktion implementiert.

    @Michael E.
    Auch eine gute Idee, aber wenn in der Konsolen FAQ schon eine Funktion implementiert ist würde ich auch diese verwenden.

    MfG CSS



  • Bjoern123 schrieb:

    void Zahlen_einlesen()

    double j;
    {
    char ch;

    do
    {
    cout<< " Ihre Eingabe Bitte:\n\n";

    cin>>j;
    if (j < 0)
    {
    cout<<" Falsche Eingabe!!! Bitte erneut eingeben!!!\n";
    continue;
    }
    cout << "\n Ist Ihre Eingabe korrekt? (j/n)(Bei n(nein) Erneute Eingabe
    moeglich.\n\n";
    cout<<" Eingabe (j/n):";
    cin >> ch;

    }
    while (ch != 'j');
    }

    Es gibt da eine kleine Taste die heißt c/c++ beim eingeben einer Antowrt/eines Threads, Quellcode markieren, draufklicken und:

    void Zahlen_einlesen()
    
    double j;
    {		
    	char ch;
    
    	do
    	{
    		cout<< " Ihre Eingabe Bitte:\n\n";
    
    		cin>>j;
    		if (j < 0)
    		{
    			cout<<" Falsche Eingabe!!! Bitte erneut eingeben!!!\n";
    			continue;
    		}
    	cout << "\n Ist Ihre Eingabe korrekt? (j/n)(Bei n(nein) Erneute Eingabe
                      moeglich.\n\n";
    	cout<<" Eingabe (j/n):";
    	cin >> ch;
    
    	}
    	while (ch != 'j');
    }
    

    Ist viel besser und übersicvhtlicher....

    Gruß eXitus :xmas1: :xmas2:


Anmelden zum Antworten