lotto
-
hallo, ich fürs Studium was programmieren und bin beim Lottoprogramm auf ein Problem gestoßen
und zwar soll man selbst tippen können, das ist auch das einzigste Problem was ich habe, da die Zahlen bis 1 bis 49 gezogen werden können, habe ich scanf benutzt, mein Problem ist jetzt aber, dass ich Buchstaben und Sonderzeichen nicht ausschließen kann, und bei Eingabe solcher, komme ich in ein Lopperror, hier der Auszug aus meinem Programm
printf("Bitte geben sie ihren Tipp ab\n\n\n"); for(zaehler=0;zaehler<6;zaehler++) { printf("zahl %i: ",zaehler+1); scanf ("%i",&tipp[zaehler]); if((tipp[zaehler]<1)||(tipp[zaehler]>49)||(tipp[zaehler]==tipp[zaehler-1])||(tipp[zaehler]==tipp[zaehler-2])||(tipp[zaehler]==tipp[zaehler-3])||(tipp[zaehler]==tipp[zaehler-4])||(tipp[zaehler]==tipp[zaehler-5])) //man kann noch 2mal die gleiche zahl eingeben { printf("unglueltige Eingabe, bitte geben sie den Tipp nochmals ab\n"); zaehler--; } }
danke für die Hilfe :p
-
Falsches Forum. Das ist C, nicht C#.
-
was hält dich davon ab, das als string einzulesen und dann mit strtol umwandeln?
oder zeichenweise zu überprüfen, ob zahl oder nicht zahl?
-
achso, sorry erstmal fürs falsche Forum, ich angtworte trotzdem mal auf die 2. Frage, in der Hoffnung mir hilft jemand
So, wieso ich das nich mache, weil ich keine Ahnung habe, wie das gehen sollte :p
Ich kenn ja nichmal den Unterschied zwischen C und C#, bzw dass das überhaupt 2 verschiedene Sprachen sindIch programmiere erst seit ein paar Wochen und mit solchen Befehlen kann ich immernoch nichts anfangen, aber ich versuch es mal mit Strings zu lösen...
-
Wenn scanf() eine Eingabe erhält, die nicht zur Formatkennung passt, hält es an - und lässt das fehlerhafte Zeichen im Eingabepuffer stehen. Da mußt du schon selber dafür sorgen, daß es entsorgt wird:
for(zaehler=0;zaehler<6;++zaehler) { int ans; printf("Zahl %d:",zaehler+1); ans = scanf("%d",&tipp[zaehler]); if(ans!=1) { printf("Bitte eine Zahl eingeben\n"; while(getc()!='\n') {} --zaehler; } else if(.../*Vergleich auf Duplikate*/) { ... } }
(btw, deinen Duplikat-Vergleich solltest du auch noch mal überdenken - du vergleichst mit Werten, die außerhalb deines Arrays stehen)
-
Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.