eingabe von buchstaben bei c verhindern

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
student
Beiträge: 2
Registriert: Mi Jun 26, 2013 6:35 pm

eingabe von buchstaben bei c verhindern

Beitrag von student » Mi Jun 26, 2013 6:46 pm

hey

meien aufgabe ist es ein kleines c programm zu entwerfen.
dabei wird eine rechnung mit der zahl ausgeführt je nachdem ob sie größer oder kleiner als 0 ist gibt es eine entsprechende formel, dies geschieht mit 10 zahlen.

ich möchte nun am anfang eine schelife einbauen die eine fehlermeldung erzeugt bzw einen weitern versuch eine zahl ein zugeben, falls beim ersten mal ein buchstabe oder ein sonderzeichen eingeben wird.

soweit hab ich das auch geschafft leider wirft mir meine schleife auch 0 als sonderzeichen aus wie kann ich das verhindern?
vielen dank im vorraus!

Code: Alles auswählen

int zahl={'1,2,3,4,5,6,7,8,9,0};
int k=0;
	
	
	
	do
	{	
	printf("Bitte geben Sie eine Zahl ein:");
	scanf(" %i",&zahl);
	while(getchar() != '\n');
	
		if(!zahl)
		{
			k++;
		}
		
		else
		{
			k=0;
		} 
		
	/*switch(zahl)
		{
			case '0': k=0;
	     	break;
	     	
			case 1: k=0;
	     	break;
			
			
			case 2: k=0;
			break;
		
			
			case 3: k=0;
			break;
			
			
			case 4: k=0;
			break;
			
			
			case 5: k=0;
			break;
			
			
			case 6: k=0;
			break;
			
			
			case 7: k=0;
			break;
			
			
			case 8: k=0;
			break;
			
			
			case 9: k=0;
			break;	
			default: k=1;
		} */
	}while(k!=0);
das sind meine beiden möglichkeiten die aber bis jetzt nicht klappen

Edit by Xin: Codetags hinzugefügt

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: eingabe von buchstaben bei c verhindern

Beitrag von Xin » Mi Jun 26, 2013 6:57 pm

Moin
student hat geschrieben:dabei wird eine rechnung mit der zahl ausgeführt je nachdem ob sie größer oder kleiner als 0 ist gibt es eine entsprechende formel, dies geschieht mit 10 zahlen.
Zahlen oder Ziffern?
student hat geschrieben:ich möchte nun am anfang eine schelife einbauen die eine fehlermeldung erzeugt bzw einen weitern versuch eine zahl ein zugeben, falls beim ersten mal ein buchstabe oder ein sonderzeichen eingeben wird.
Wenn Du scanf nimmst, begibst Du Dich automatisch in Gefahr. Wenn Du scanf mit %i fütterst, wird ein Integer gelesen. Egal, was Du eingibst. Wenn Du Ziffern eingibst, kann man das als Integer lesen. Gibst Du Buchstaben ein... passiert irgendwas.

Ich kann von scanf in dem Sinne nur abraten.
student hat geschrieben:soweit hab ich das auch geschafft leider wirft mir meine schleife auch 0 als sonderzeichen aus wie kann ich das verhindern?
vielen dank im vorraus!
Was heißt, wirft die Schleife 0 als Sonderzeichen raus!?
Welche Schleife, welche Ausgabe?


Schau Dir mal scanf an.
Dann wirst Du vermutlich erstmal einen String einlesen müssen und dann in einer Schleife prüfen müssen, welche Art von Zeichen eingegeben wurden. Dafür gibt es die ctype-Bibliothek.

Damit und den Beispielen in den Funktionen solltest Du erstmal weiterkommen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

student
Beiträge: 2
Registriert: Mi Jun 26, 2013 6:35 pm

Re: eingabe von buchstaben bei c verhindern

Beitrag von student » Mi Jun 26, 2013 9:37 pm

okay danke !!!

hab zwar etwas gesessen aber endlich klappts so wie erhofft!!

mfg

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: eingabe von buchstaben bei c verhindern

Beitrag von Xin » Mi Jun 26, 2013 9:42 pm

student hat geschrieben:hab zwar etwas gesessen aber endlich klappts so wie erhofft!!
Das ist normal, wenn man C lernt.

C ist eine ernstzunehmende Programmiersprache. Damit kannst Du Dich jahrelang beschäftigen, ohne dass es langweilig wird, weil man damit eben wirklich nahezu alles machen kann. Wenn Du sie also richtig kannst, kannst Du Dir auch was drauf einbilden.
Lohnt sich also.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten