Fehleingabe

Hi,
also ich bin jetzt immer wieder auf das Problem gestoßen , dass ich ein für einen "dummen Benutzen" fehlerfreies Programm schreiben soll.Dieses dumm definiert sich so ,dass ein Benutzer eine int Variable zB mit "B" füllt.Dann schmiert mein Programm jedes mal ab , was es dem Benutzer nicht unbedingt vereinfacht mit dem Prog umzugehen... wie kann ich jetzt als im falle einer falscheingabe wieder zur eingabe zurückkehren.D.h falscher Eingabetyp also noch mal.

MfG

Sigmund
 
moin


Du könntest, das was eingegeben wird, erst als string speichern.
Dann jedes Element dieser Zeichenkette überprüfen ob es eine Ziffer ist, wenn alle Zeichen dieses Strings Ziffern sind, wandle diesen String mit atoi in ein int und mache mit dem Programm weiter.
Sollte eines der Zeichen in dem String keine Ziffer sein, wiederhole die Eingabe.


mfg
umbrasaxum
 
Ich würde das mit try/catch machen, das müsste doch einfacher sein oder nicht ?

Müsstest du im Forum hier finden, einfach mal suchen...

Gruss

MFC OpenGL
 
Sorry, wenn ich dieses veraltete Thema wieder hochhole, aber ich habe ein ziemlich ähnliches Problem.

Und zwar handelt es sich bei mir darum, dass der Nutzer keine Negativen Zahlen eingeben darf, die Zahl die er jedoch eingibt, soll mit mehreren Möglichkeiten verglichen werden. Deshalb habe ich mal mit einer If-Else Funktion angefangen.
Das Problem ist, dass man das Programm neustarten muss, wenn der Nutzer eine Negative Zahl eingibt. Meine Idee war: einfach ein scanf befehl. bei der if funktion bei der auf Negative Zahl geprüft wird, einzusetzen. Allerdings lässt sich das Programm dann nicht kompilieren :( Ein weiteres Problem besteht darin, dass wir nur aus der Vorlesung bekannte Sachen anwenden dürfen, d.h. Befehle wie Try,catch (von denen ich ohnehin nicht weiß wie sie funktionieren) dürfen nicht verwendet werden. Es kann natürlich auch sein, dass wir die Aufgabe falsch interpretiert haben und unsere Lösung, eine einfache Prüfung auf Negative Zahl und der Konsequenz, dass dann die Meldung "Bitte keine negativen Zahlen eingeben" ausgespuckt wird ausreicht. Schön wäre es ja aber dann trotzdem, wenn das Programm neustartet bzw. dem Nutzer eine Neueingabe ermöglicht :)

Vielen dank schonma für eure Antworten,

gruß kenti

P.S. wir Programmieren mit C. Wir wissen was Variablen, if-else-funktionen, for-schleifen sind. Natürlich kennen wir auch die Befehle printf, scanf. Das war glaub schon alles was wir in unseren 2 Vorlesungen hatten :/
 
/* 04.05.2010
* Created by S.K. & C.W.
*/

#include <stdio.h>

int main(void)

{
//Deklaration der Vergleichswerte
int b,c,d,z;
printf("bitte gebe eine Jahreszahl ein\n");
scanf("%i",&z);
//Festsetzen der Konstante a, welche der eingegebenen Zahl z entspricht
const int a=z;
b=a%4;
c=a%100;
d=a%400;

if (a < 0)
printf("Bitt keine negativen Zahlen eingeben.\n");
//printf("./schaltjahr\n");
//printf("Bitte gebe eine neue Zahl ein\n");
//scanf("%i",&z);

else{
if (d == 0)
printf("Ihr eingegebenes Jahr ist ein Schaltjahr\n");
else{
if (b == 0)
{
if (c == 0)
printf("Ihr eingegebenes Jahr ist kein Schaltjahr\n");
else
printf("Ihr eingegebenes Jahr ist ein Schaltjahr\n");
}
else
printf("Ihr eingegebenes Jahr ist kein Schaltjahr\n");
}
}
return 0;
}

Achja und wir sollen das Programm sinnvoll Kommentieren, da wir erst angefangen haben mit Programmieren wissen wir nicht was unter sinnvoll zu verstehen ist. Also wäre ich auch hier für tips dankbar :)
 
Der erste Tipp ist mal die Tags für C Code zu verwenden ([ C ] [/ C ] ohne die Abstände nach den Klammern)

Des weiteren kannst du die Eingabe mit einer while-Schleife relativ auf das gewünsche Ergebnis bringen:
C:
	int a = 0;
	scanf("%i", &a); // Fragt mal einfach einen ersten Wert ab und hofft auf gescheite Benutzer
	while(a < 0) // Wir dürfen erst weitermachen, wenn der Benutzer positiv ist
	{
		printf("Der Wert '%i' ist negativ. Bitte keine negativen Werte eingeben!\n");
		scanf("%u", &a);
	}
 
Zurück