Zum Inhalt springen

Wortzahlen 'deuten'


DaRkZeAlOt

Empfohlene Beiträge

Hallo,

Ich arbeite gerade an einem DOS Taschenrechner in C++. Bin auch so gut wie fertig, es gibt nur noch ein Problem : Das Programm soll auch mit Eingaben wie

dreihuntertfünfzig mal zweiundreißig

fertig werden, und das macht mich gerade etwas fertig :confused: . Meine bisherige Überlegung war erstmal die beiden Zahlen in folgende Komponenten zu zerlegen :

============================

ein

zwei

drei

vier

fünf

huntert

tausend

milion

milionen

zehn

zwanzig

dreißg

vierzig

fünfzig

sechzig

siebzig

achzig

neunzig

============================

(Ich behaupte mal das sind alle möglichen)

Nun könnte man die Komponenten umwandeln und wieder zusammensetzen wo allerdings mein Problem liegt, zB.:

zweitausenddreihundertfünfundfünfzig

2 1000 3 100 5 50

Einfaches zusammenaddieren würde hier wohl kaum zum Erfolg führen. Hat vieleicht jemand eine zündende Idee (oder einen ganz anderen Vorschlag) ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi also im grunde must du nur den STring analysieren und nachsehen ob eine deiner zahlen vorkommt.

zu deinem Beispiel natürlich kannst du das einfach addieren bzw. an richtiger stelle natürlich multiplizieren

zweitausenddreihundertfünfundfünfzig

daraus amchst du

zweitausend= 2*1000

dreihundert= 3*100

fünf=5

und--

fünfzig=50

du must einfach beim größten wortwert anfangen. also suchst du z.b. erst nach Millionen findest nix ... nach tausend.

schneidest alles was vor der Tausend steht aus (in eine andere VAriable).

Daraus bastelst du dir dann (z.B. SiebenundZwanzigTausend)

7+20*1000.

Die Methode um z.b. 27 auseinander zu bauen würde ich extern aufrufen da du diese sehr oft benötigst.

Hoffe das ist halbwegs verständlich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, es sind ja immer Blöcke von bis zu drei Ziffern, und zwar von 0 bis 999. Danach kommt noch die Zehnerpotenz des Blocks mit dem Exponenten als Vielfachem von 3. Danach zerlegst du die Zahl. Ist aber, wie schon gesagt, nicht allzu einfach. Und was machst du, wenn jemand "huntert" anstelle von "hundert" eingibt? *SCNR*

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe inzwischen eine Möglichkeit gefunden Wortzahlen sinvoll zu zerlegen. Schauen wir uns mal eine große Zahl an :

dreihundertvierunsdechzigmillionenzweihundertfuenfunddreissigtausenddreihundertachtzehn

Meine Funktion zertrennt die Zahl erstmal nach Million, Tausend und Hundert :

dreihundertvierunsdechzig

millionen

zweihundertfuenfunddreissig

tausend

dreihundert

achtzehn

Folgend werden die Werte vor Million, Tausend und Hundert in Zahlen umgewandelt und ausgerechnet undzwar erstmal die 'Und' Verknüpfunden

(zB.: 2und40 => 2+40 => 42). Danach die 'Hundert' Verknüpfungen (4100 => 400). Die Unterergebnisse werden wieder zusammenaddiert und mit der 10er Potenz (Million, Tausend, Hundert) multilitziert.

Alle daraus resultierenden Unterergebnisse werden wieder addiert worraus sich die Zahl ergibt.

Die Umwandlung von Wort bis zahl vor dem Rechenprozess ist einfach, es gibt 3 Arrays :

1. Wortzahlen ("ein", "vierzig", ...)

2. Zahlen ("1,","40",...)

3. Wortzahllänge (3,7,...)

Die Wortzahlen werden im Eingabestring gesucht, dann werden sie durch ihr Pendant im Zahlen Array ersetzt, undzwar so viele Stellen wie im Wortzahlenlänge Array angegeben. (Danach dann die oben genannten Zerlegungsfunktionen)

Wenn jemand den Code sehen möchte poste ich ihn hier gerne. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...