Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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) ?

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.

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*

Wenn jemand sich vertippt hat er Pech gehabt (bzw. übliche Fehlerroutine) :D .

Ich versuch das mal Morgen umzusetzen, danke euch erstmal !

Und was machst du, wenn jemand "huntert" anstelle von "hundert" eingibt? *SCNR*

Fehlertollerant suchen :)

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. ;)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.