Geldbetrag in Worten ausgeben



  • Guten Abend,

    habt ihr eine Idee wie ich eine eingegebene Zahl in Worten ausgebe? Wie berücksichtige ich dort die Stellen, z.B. 201 ist zweihundert-eins?

    Kann ich das mit einer switch case machen?

    Schon mal danke.


  • Mod

    Nun, du überlegst dir die ganzen Regeln die es in der deutschen Sprache gibt und setzt diese einzeln um. Das werden recht viele Regeln und auch einige Sonderfälle. Einfacher ist es vielleicht, sich zunächst mit einfacheren Sprachen oder einem vereinfachten Deutsch zufrieden zu geben (123 kann man zum Beispiel auch "Einshundertundzweizigunddrei" nennen oder mit etwas mehr Anspruch "Einhundertunddreiundzweizig").
    Die Umsetzung der Regeln wird jede Menge Kontrollstrukturen benötigen, switch kann ein Teil davon sein. Möglicherweise auch allerlei Schleifen und if-Abfragen.



  • Am besten machst du dir ein Array mit 100 Werten, den Zahlen von 0 bis 99 ("", "eins", "zwei", "drei", ... "zehn", "elf", ... "neunundneunzig") ausgeschrieben. Dann eines mit den Hundertern (000="",100="hundert",200,300,...900) und eines mit den Tausendern (0000="",1000="tausend",2000="zweitausend",...9000="neuntausend").
    Wichtig ist, dass 0 immer "" ist.

    Dann kommst du nur mit einer Kontrollstruktur aus:

    if (zahl == 0)
      printf("null\n"); // spezialfal
    else
      printf("%s%s%s\n", tausender[zahl/1000 % 10], hunderter[zahl/100 %10], einer[zahl%100]);
    


  • Ah Ok, gibt es dafür eine Funktion in C? Das wäre sehr zeitaufwendig alles per Hand aufzuschreiben.



  • Ich habe grade versucht diese Funktion zu nutzen, allerdings erhalte ich immer eine Fehlermeldung. Könnt ihr mir weiterhelfen?

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int zahl[100]; 
    int tausender;
    int hunderter;
    int einer;
    
    int main()
    {
    
    if (zahl == 0) 
    	printf("null\n"); // spezialfal 
    else 
    
      printf("%d%d%d\n", tausender[zahl/1000 % 10], hunderter[zahl/100 %10], einer[zahl%100]);
    
    	printf("Sie haben %d eingegeben.\n", zahl);
    


  • MMueller schrieb:

    Ah Ok, gibt es dafür eine Funktion in C? Das wäre sehr zeitaufwendig alles per Hand aufzuschreiben.

    Nein, natürlich nicht, C kennt die deutsche Sprache überhaupt nicht. Das mit den Arrays würde ich so auch nicht machen.

    Speichern musst du nur Zahlen von 1-17 (mit Ausnahme von 13,14,15, die sich auch kontruieren lassen. die Zehner "zehn", zwanzig",..."neunzig".
    Ebenfalls "hundert", "tausend", "millionen" etc.

    Wenn du das Ganze geschickt in Funktionen verteilst (bis19, bis99, bis999 etc.) und mit Modulo und Division arbeitest, kannst du das bestimmt auch gut alleine schaffen.

    Ergänzung: Äh, ich sehe gerade deinen Code...Vielleicht solltest du dich doch noch ein wenig mit den notwendigen Grundlagen beschäftigen.



  • Den Code hab ich nur auf die schnelle gemacht. Kann mir wer einen Ansatz geben? Ich hab noch nicht so viel Ahnung wie ich programmiere. Das wäre sehr nett.




  • Mod

    MMueller schrieb:

    Ah Ok, gibt es dafür eine Funktion in C? Das wäre sehr zeitaufwendig alles per Hand aufzuschreiben.

    Deswegen hast du das ja auch als Hausaufgabe bekommen.

    MMueller schrieb:

    Den Code hab ich nur auf die schnelle gemacht.

    Deswegen hast du das ja auch als Hausaufgabe bekommen.

    Kann mir wer einen Ansatz geben? Ich hab noch nicht so viel Ahnung wie ich programmiere. Das wäre sehr nett.

    Das ist sicher nicht der Sinn dieser Aufgabe.


Anmelden zum Antworten