Hallo Community!
Wir haben in der Schule eine Aufgabe bekommen bei der wir Römische Zahlen eingeben müssen und das Programm uns den Wert dieser Zahlen ausgibt.
Allerdings habe ich dabei Probleme da wir bisher nicht gelernt haben wie wir das umsetzen können, wir sollen uns das wissen im Internet aneignen. Daher bitte ich um Hilfe!
danke im Vorraus!
Hallo Keyroi,
na, das ist doch eine coole Aufgabe für den Anfang. Was hast du denn bisher probiert? Zeig mal ein wenig Code.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Momentan stehe ich noch am Ansatz ^^
zuerst dachte ich das ich die Römische Buchstaben mit ihren jeweiligen Werten in ein Array packe. Dann mit string.length die länge bzw. Anzahl an eingegebenen Buchstaben auslesen.. und dann hört mein wissen auch schon auf ^^
Hallo Keyroi,
geh erstmal vom Code weg.
sagt dir, dass römische Zahlen, die mit einem Buchstaben präsentiert werden, einen Wert haben. Deine Aufgabe besteht nun darin die Buchstaben in die Zahlen umzuwandeln. Die Zweite Aufgabe wird sein, dass du diese Zahlen dann addierst.
Somit:
Lies einen Eingabestring aus der Console
Gehe diesen Zeichen für Zeichen durch --> Schleife
Hole dir für jeden Buchstaben den Wert des Buchstabens
Addiere den jeweils auf dein Ergebnis auf
Prüfung nach Subtraktionsregel/Sonderfällen nicht vergessen, da du eventuell subtrahieren musst.
Am Ende gibst du das Ergebnis aus.
(Das ist eine mögliche Lösung von hunderten und nur das, was mir gerade einfällt. Sind sicher noch Sonderfälle drin)
So...nun zeig mal etwas Code, den du programmiert hast.
Wenn du mal [FAQ] Wie finde ich den Einstieg in C#? und [Hinweis] Bitte schau in die SDK-/MSDN-Doku gelesen hast, wird dir sicher schnell klar, wie sowas funktioniert.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
zuerst sollte ich erwähnen das wir nicht in der Konsole sondern mit windows forms arbeiten und zweitens würde das doch nicht funktionieren wenn ich z.b. IV eingeben würde da das ja nach römischen zahlen 4 ergibt aber das programm würde so doch 6 ausgeben oder?
Hallo Keyroi,
richtig, stimmt, das habe ich nicht bedacht!!! Gut, das ändert aber an der grundsätzlichen Vorgehensweise nicht viel. Das kannst du ja prüfen.
Steht in dem Wiki-Link unter "Subtraktionsregel". (Habs mal oben editiert)
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hast Du denn überhaupt schon mal gegoogelt, um einen Ansatz zu bekommen?
Roman numbers to integers
Google sollte immer zusammen mit Forensuchen der erste Anlaufspunkt sein...
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Keyroi,
auch wenn Abt dir die Lösung jetzt gegoogelt hat: Versuch es selber zu implementieren oder, wenn du es schon kopierst, zu verstehen (am Besten durch nachimplementieren). Dann lernst du am Meisten.
Ich bin mir sicher, dass dein Lehrer auch googlen kann 😉
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Es war eher ein Hinweis, dass man sich nicht den Ansatz von einem Forum vor machen lassen soll.
Zu den Lösungen steht i.d.R. der Grund der Implementierung, mit dessen Gedankenstütze man es dann selbst implementieren sollte.
Schließlich ist nicht jede Lösung gleich gut.
Wenn er jetzt den Code kopiert, dann wird er a) nichts, aber auch gar nichts lernen und b) hoffentlich von seinem Lehrer gerüffelt.
Von daher würde es sich damit nur selbst schaden 😃
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hab jetzt ein Dicitionary erstellt (nachdem ich mir das beigebracht habe:D)
wie kann ich jetzt auf die werte zugreifen wenn ich den inhalt einer textbox in eine Variable tue?
Keine externen Filehoster. [Hinweis] Wie poste ich richtig? Punkt 6.1
Du hast Dir das Dictionary abgeschaut, aber nicht angeschaut.
Ansonsten wüsstest Du, wie man auf die entsprechenden Werte zugreift.
Schau in die Doku; da steht es.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Du solltest die Literale in dein Dictionary aufnehmen, NICHT (nur) die einzelnen Buchstaben.
Als Literale gelten alle einzelnen Buchstaben, und dazu die Konstrukte, bei denen man etwas abziehen muss:
IV (Wert 4)
IX (Wert 9)
XL (Wert 40)
XC (Wert 90)
CD (Wert 400)
CM (Wert 900)
Jetzt gehst du durch die römische Zahl durch, suchst der Reihen nach von links nach rechts alle Literale und addierst deren Wert. Fertig.
LaTino
Standardvorgehen für jeden Parser: die "Sprache" in ihre Grundbestandteile zerlegen und anhand der den Grundbestandteilen - Literalen - zugeordneten Werte den Inhalt ermitteln. Ich finde es allerdings ausgesprochen seltsam, dass man das als Aufgabe mit dem Hinweis "schaut im Internet, wie" bekommt.
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Hallo,
vielleicht kann Dir Zommi's Lösung hier als Anschauungsmaterial dienen: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca