 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Werner Heise Guest
|
Posted: Wed Apr 21, 2004 6:27 am Post subject: Eingabe - nur Zahlen erlaubt |
|
|
Hallo, wie kann ich eine Benutzereingabe so beschraenken, dass nur Zahlen
als Eingabe erlaubt sind? Bis jetzt habe ich das unter c immer wie folgt
gemacht:
double fehler(char text[40])
{
int i, s1;
double zahl;
char txt[17];
do
{
printf("n%s",text);
scanf("%s",&txt);
i = 0; s1 = 0;
while(( txt[i] != 0) && (s1 <=1))
{
if (txt[i] <='9');
else
{
if (txt[i] == '.') s1++ ;
else s1 = 2;
}
i++;
}
if ( s1 >= 2) printf("Fehler ! - Eingabe ist falsch n");
}
while(s1 >= 2);
zahl = atof(txt);
return(zahl);
}
Nun wollte ich das ganze aber an C++ anpassen bzw. Funktionen aus C++
verwenden.
Wer kann mir da weiterhelfen?
Danke
Wern
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Rene Gutschmidt Guest
|
Posted: Wed Apr 21, 2004 9:37 am Post subject: Re: Eingabe - nur Zahlen erlaubt |
|
|
| Quote: | Hallo, wie kann ich eine Benutzereingabe so beschraenken, dass nur Zahlen
als Eingabe erlaubt sind? Bis jetzt habe ich das unter c immer wie folgt
gemacht:
|
[SCHNIP - SCHNAP]
| Quote: | Nun wollte ich das ganze aber an C++ anpassen bzw. Funktionen aus C++
verwenden.
Wer kann mir da weiterhelfen?
|
Hmm, am Einfachsten ist es wohl mit 'std::cin'!
#include <iostream>
int main()
{
int zahl;
std::cin >> zahl;
if( !std::cin.good() )
std::cout << "Fehler, haben keine Zahl gefunden!n";
return 0;
}
Hier würde 'std::cin' nur int Typen einlesen, d.h. Solbald ein Zeichen kommt
(a-z) bricht er ab und der Stream ist nicht gut (good). Damit würde ich ein
wenig rumspielen ...
Ich hoffe, dass konnte helfen - falls weitere Fragen sind, dann einfach
posten.
Rene
-------------------------------------
[email]grenenewsgroup (AT) yahoo (DOT) de[/email] is never read
I'm grenenewsgroup at web dot de
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Wed Apr 21, 2004 9:43 am Post subject: Re: Eingabe - nur Zahlen erlaubt |
|
|
Werner Heise wrote:
| Quote: | Hallo, wie kann ich eine Benutzereingabe so beschraenken, dass nur
Zahlen als Eingabe erlaubt sind? Bis jetzt habe ich das unter c immer
wie folgt gemacht:
double fehler(char text[40])
{
int i, s1;
double zahl;
char txt[17];
do
{
printf("n%s",text);
scanf("%s",&txt);
|
Wieso scanf? Abgesehen davon ist das unsicher. Was, wenn jemand mehr als
16 Zeichen eingibt?
| Quote: | i = 0; s1 = 0;
while(( txt[i] != 0) && (s1 <=1))
{
if (txt[i] <='9');
else
{
if (txt[i] == '.') s1++ ;
else s1 = 2;
}
i++;
}
if ( s1 >= 2) printf("Fehler ! - Eingabe ist falsch n");
}
while(s1 >= 2);
zahl = atof(txt);
|
Statt atof hättst du besser mal strtod eingesetzt. Das hätte die
Überprüfung automatisch für dich gemacht.
| Quote: | return(zahl);
}
Nun wollte ich das ganze aber an C++ anpassen bzw. Funktionen aus C++
verwenden.
Wer kann mir da weiterhelfen?
|
In C++ könntest du das so schreiben:
double fehler(std::string text)
{
using namespace std;
double zahl;
cout << 'n' << text;
while (! (cin >> zahl))
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), 'n');
cout << "Fehler ! - Eingabe ist falsch n" << text;
}
return zahl;
}
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Karl Jenz Guest
|
Posted: Wed Apr 21, 2004 4:09 pm Post subject: Re: Eingabe - nur Zahlen erlaubt |
|
|
Werner Heise schrieb:
| Quote: | Hallo, wie kann ich eine Benutzereingabe so beschraenken, dass nur
Zahlen als Eingabe erlaubt sind? Bis jetzt habe ich das unter c
immer wie folgt gemacht:
|
Hallo Werner,
Manchmal besteht des weiteren noch das Problem, dass der Anwender
nur 1, 2 oder 3 Stellen nach dem Komma eingeben darf.
Und manchmal soll ein Datum eingegeben werden. Eine
mögliche Lösung findest du auf meiner Homepage unter Cplus.
Wenn du dort aus dem Projekt EARc die Dateien BasisMU.*
studierst, dann hilft das vielleicht weiter.
--
Mfg Karl Jenz
http://karl.jenz.bei.t-online.de
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Werner Heise Guest
|
Posted: Mon May 31, 2004 5:52 pm Post subject: Re: Eingabe - nur Zahlen erlaubt |
|
|
On Wed, 21 Apr 2004 16:09:47 +0000, Karl Jenz wrote:
| Quote: | Werner Heise schrieb:
Hallo, wie kann ich eine Benutzereingabe so beschraenken, dass nur
Zahlen als Eingabe erlaubt sind? Bis jetzt habe ich das unter c
immer wie folgt gemacht:
Hallo Werner,
Manchmal besteht des weiteren noch das Problem, dass der Anwender
nur 1, 2 oder 3 Stellen nach dem Komma eingeben darf.
Und manchmal soll ein Datum eingegeben werden. Eine
mögliche Lösung findest du auf meiner Homepage unter Cplus.
Wenn du dort aus dem Projekt EARc die Dateien BasisMU.*
studierst, dann hilft das vielleicht weiter.
--
Mfg Karl Jenz
http://karl.jenz.bei.t-online.de
|
Danke!
Mfg, W. heise
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|