Eingabe von Buchstaben etc. verweigern

  • #1
N

newbee21014

Mitglied
Themenersteller
Dabei seit
07.09.2005
Beiträge
11
Reaktionspunkte
0
Ort
Willisau / LU (CH)
Hi zusammen!
An unserer Berufsschule gibts eine spezielle Formel zum ermitteln der Note. Dazu habe ich in C ein kleines Programm geschrieben, das auch funktioniert.
Zum Problem: Wenn jemand Buchstaben oder Sonderzeichen eingibt, dreht das Programm durch und wiederholt die while-Schleife ohne Ende.
Frage: Gibt es einen Befehl oder eine Möglichkeit, die Eingabe auf Zahlen so zu beschränken, dass wenn Buchstaben oder Sonderzeichen eingegeben werden eine Fehlermeldung ausgegeben oder das Programm beendet?
Merci in Voraus
Gruss, newbee21014
 
  • #2
Poste doch mal den betreffenden Codeteil.
 
  • #3
Sorry, wirkt ein bissl chaotisch:

#include stdafx.h

void main()
{
float pkte = 0; //DEKLARATION DER EIGENEN PUNKTZAHL
float gpz =0; //DEKLARATION DER GESAMTPUNKTZAHL
float note = 0; //DEKLARATION DER NOTE

printf(Willkommen! Mit diesem Tool k\x94nnen Sie \n); //BEGRÜSSUNG_1
printf(anhand ihrer sowie der Gesamtpunktzahl ihre Note ermitteln.\n); //BEGRÜSSUNG_2
printf(                  (C) David Singh, INF1b    \n); //COPYRIGHT
printf(-----------------------------------------------------------\n\n); //TRENNLINIE

while(1) //BEGINN EINER WHILE-SCHLEIFE
{
printf(Geben Sie ihre Punktezahl ein: ); //EINGABEAUFFORDERUNG FÜR EIGENE PUNKTE
scanf(%f,&pkte); //EINLESEN SELBIGER
if(pkte==0) //WENN PUNKTE = 0 SIND, ...
break; //..BEENDE DAS PROGRAMM
printf(Geben Sie nun die maximal erreichbare Punktzahl an: ); //EINGABEAUFFORDERUNG GESAMTPUNKTZAHL
scanf(%f,&gpz); //EINLESEN SELBIGER
if(pkte>gpz) //WENN EIGENEPUNKTZAHL GRÖSSER GESAMTPUNKTZAHL...
{
printf(Mehr als die Gesamtpunktzahl ist nicht m\x94glich.\n); //...GIB AUS, DASS DAS NICHT GEHT...
break; //...UND BEENDE DAS PROGRAMM
}
printf(Sie haben eine %.2f.\n\n\n\n, ((pkte/gpz)*5)+1); //ANSONSTEN GEBE DIE NOTE AUS
}
printf(Programm beendet!\n); //WENN EINE DER BEDINGUNGEN ZUTRIFFT UND PROGRAMM BEENDET WURDE, GIB DAS AUS
system(pause); //PROGRAMM ANHALTEN
}
 
  • #4
Hoi!

ich kenn mich in C nich so aus..aber Du kannst doch bestimmt die Eingabe in ASCII-Codes umwandeln und da dann den Gueltigkeits-Bereich festlegen.
Zahlen liegen zwischen 30 und 39 HEX, also 48 bis 57 Dec .....
Dann kannste ja mit ner IF rausfiltern was nich reingehoert...
Oder Du laesst nur INT- bzw bei Gleitkomma-Zahlen (falls die Lehrer auch halbe Punkte vergeben) FLOAT-Werte zu... soviel zur Theorie, praktisch kann ich Dir aber nich weiterhelfen :-[

Viel Erfolg!
 
Thema:

Eingabe von Buchstaben etc. verweigern

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben