Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » einlesen?!?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.12.2008, 22:00 Uhr
~Dummbatz-Maru
Gast


Hallo liebe Leute,

ich habe in IT eine Aufgabe und bei der ein spezielles Problem, ich fang mal an:

Es geht darum, in C eine Simulation für ein Darts-Spiel zu programmieren, bei der der Benutzer den getroffenen Wert eingibt. Dabei kann er die Zahlen 1-20 oder 25 eingeben und die Multiplikator-Felder sollen so eingegeben werden, dass d (double) oder t (triple) der Zahl voranstehen.

Beispiele:
10 bedeutet, dass die 10 getroffen wurde
d20 bedeutet, dass die double 20 getroffen wurde, also ist die Trefferpunktzahl 40
t5 bedeutet also eine Punktzahl von 15

Fehlerhafte Eingaben sollen dabei vom Programm erkannt und zurückgewiesen werden!

Mein Problem:

Wie kann ich zB d20 auf einmal einlesen und als welche Variable (String?),
überprüfen, ob die Eingabe korrekt war (mehrere Fälle mit oder ohne character vor der Zahl möglich, nur bestimmte Zahlen möglich)
und danach aus meinem d20 eine 40 machen?

Vielen Dank im voraus,

Dummbatz-Maru
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.12.2008, 22:45 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von ~Dummbatz-Maru:
Wie kann ich zB d20 auf einmal einlesen und als welche Variable (String?),

genau: string.
Da kannst du Deine Eingaben auf Korrektheit überprüfen, anschliessend teilst Du den String auf: Dem Buchstaben entsprechend einen Faktor zuweisen, und den Zahlwert in einen int umwandeln.


Zitat:
überprüfen, ob die Eingabe korrekt war (mehrere Fälle mit oder ohne character vor der Zahl möglich, nur bestimmte Zahlen möglich)

Entweder mit einer Menge if(...) else if (...) else if (...) else if (...) ... hintereinander, oder mit einer switch-case-Konstruktion.


Zitat:
und danach aus meinem d20 eine 40 machen?

Nun, wenn d für double steht, also einem Faktor 2 entspricht, dann brauchst Du doch blos den Faktor mit dem Zahlenwert multiplizieren, sofern Du den Eingabestring so zerlegt hast, wie oben vorgeschlagen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.12.2008, 23:15 Uhr
~Dummbatz-Maru
Gast


Zunächst! Vielen Dank!


Zitat:
genau: string.
Da kannst du Deine Eingaben auf Korrektheit überprüfen, anschliessend teilst Du den String auf: Dem Buchstaben entsprechend einen Faktor zuweisen, und den Zahlwert in einen int umwandeln.


Richtig. Wie mache ich das?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.12.2008, 23:37 Uhr
~Dummbatz-Maru
Gast


Beziehungsweise, wie kann ich generell falsche Eingaben als falsch erkennen und deutlich machen?

zB wenn ich einen integer einlesen möchte, aber einen character eingebe.

muss ich das als string einlesen und dann mit sscanf überprüfen oder geht das auch anders?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.12.2008, 22:24 Uhr
Hans
Library Walker
(Operator)


Hi,

Du machst deinem Nickname ja alle Ehre...

Erst mal musst du die Eingaben haben, sinnvollerweise als string. Den zerlegst Du dann in seine Einzelteile, und prüfst diese einzeln. Buchstaben lässt du, wie sie sind, da brauchst du ja nur zu gucken, ob der Buchstabe richtig ist, oder nicht.
Dann guckst Du nach Ziffernsymbolen. Die kannst Du dann mit atoi() oder sowas in int-werte umwandeln und entsprechenden Variablen zuweisen. Der Rest wie oben. Alles klar?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: