Buchstaben verhindern

evolem

Grünschnabel
Hallo zusammen,

ich bin ein C/C++ Frischling. Ich habe hier ein kleines Programm geschrieben, das die Geschwindigkeit berechnet. Mein Problem ist, das ich Eingaben von Buchstaben verhindern möchte.

double x, t, v;

void main (void)
{
do
{
printf ("Weg zwischen 50 und 100 Meter eingeben: ");
scanf ("%lf", &x);
if (x < 50 || x > 100 || !isascii( x < 58 && x > 47) )
{
printf ("\nFehler bitte Neueingabe! \n");
}
}
while (x < 50 || x > 100 || !isascii( x < 58 && x > 47));

do
{
printf ("Zeit zwischen 10 und 60 sekunden eingeben: ");
scanf ("%lf", &t);
if ( t < 10 || t > 60 )
{
printf ("Falsche Eingabe\n");
}
}
while ( t < 10 || t > 60 );
v = x / t ;
printf ("Die Geschwindigkeit betraegt: %.2f m/s", v );
getch ();
}

Das isascii (), wie ich schon gegoogelt habe, scheint es nicht zu wollen. Was mache ich falsch? Oder gibt es eine andere Möglichkeit?

Gruß Evolem
 
Hallo

Ich hab mal kurz ein bischen was geschrieben.

Code:
/*
Ne kleine Erklärung des Programms:

Dieser Programm liest einen string ein.
Dann überprüft es sämtliche Buchstaben ob sie zwischen
0 und 9 liegen oder ein Punkt sind.
Jedesmal wen das zutrift wirt ok erhöt;
Wenn ok am schluss gleich lang wie der string ist passen alle zeichen.
Dann wird der string in eine float konvertiert.
*/
    char eing[20]={0};
    scanf("%s",eing);
    int ok=0;
    for(int a=0;a<strlen(eing);a++)
    {
             if( (eing[a]>=48 && eing[a] <=57)||eing[a]=='.')
                ok++;
    }
    if(ok!=strlen(eing))
                        printf("Falsche Eingabe");
    float meter=atof(eing);

Du musst dann nur noch prüfen ob der Wert im gewünschten Bereich liegt

Ich hoffe ich konnte helfen.
cu :)
 
Zurück