# "Sprachausgabe" für Zahlen



## SirAndy (6. Jan 2004)

Hi!

Falls irgendjemand schonmal eine "Sprachausgabe" für Zahlen (Bsp: Eingabe: 3245 Ausgabe: dreitausendfünfundvierzig) mit Klassen und Objekten programmiert hat, so möge er doch bitte auf den Thread antworten!

MfG

Andy K.


----------



## stev.glasow (6. Jan 2004)

[schild=1 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]meld[/schild] 

wenn du mit sprachausgabe nicht sprachausgabe meinst   (der satz ist ernst gemeint)


----------



## SirAndy (6. Jan 2004)

Mit Sprachausgabe meine ich:
Eingabe = 12123
Ausgabe (in geschriebener Form zB via JOptionPane) = zwölf tausend einhundertdreiundzwanzig

ich meine nicht, dass das jemand die Zahl sagt also so mit Ton 

...


----------



## stev.glasow (6. Jan 2004)

hab ich mir schon gedacht - aber jetzt schluss mit dem gelaber was hast du für ein problem.


----------



## SirAndy (6. Jan 2004)

Ansich weiß ich gar nicht wie ich anzufangen habe. Als Tipp ist gegeben, dass man den Aufbau in 3er Gruppen beachten soll!
Ich bin soweit gekommen, dass er die Zahlen liest und die einzelnen Ziffern ausgeben kann, ohne jedoch hundert, tausend oder ähnliches zu berücksichtigen.  Da wir zZ das Thema Klassen und Objekte haben vermute ich, dass eine Lösung darüber am wahrscheinlichsten ist.

Aber wie gesagt, ich hab davon kein Plan


----------



## stev.glasow (6. Jan 2004)

[schild=1 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1] aller Anfang ist schwer[/schild]

überleg leg dir doch erst einmal die ganzen regel, das ist schon mal die halbe miete:
z.B. 

```
1 = eins
2 = zwei
...
9 = neun
10 = zehn
11 = elf
12 = zwölf
10 + x = [x] + "zehn"
x * 10 = [x] + "zig" außer x == 2 dann zwanzig
x * 10² = [x] + "hunderd" 
x * 10³ = [x] + "tausend"
```
(das war jetzt kein javacode)

so in der art, man kann das auch mit worten ausformuliern. die haubsache ist, dass man einen überblick über die regeln die zubeachten sind bekommt.

*später* kann man dann zum beispiel die zahl 39 wie folgt auswerte:

```
x = 9
y = 30

xwort = [9] = "neun"
ywort = [3 * 10] = [3] + "zig" = "drei" + "zig" = "dreizig"

wort = xwort + "und" + ywort = "neun" + "und" + "dreizig = "neununddreizig"
```
(das war jetzt auch kein javacode)

so würde ich an die sache herran gehen - gibt bestimmt auch andere und auch bessere wege.

ist im kroben klar was ich meine ? (also erstmal die regeln überlegen und dann können wir uns überlegen wie man das in codeform umsetzt)


----------



## bbnvacx (5. Feb 2009)

Ich hab sowas mal in C++ geschrieben, weiß aber nicht, wo das in den Tiefen meines Rechners geblieben ist.


----------



## bbnvacx (5. Feb 2009)

Habs gefunden


----------



## Marco13 (5. Feb 2009)

Hatte das auch mal gebastelt. Und aus irgendeinem Grund obfuskiert.

```
class NumText2 {
 public static void main(String args[]) {
  System.out.println("                  0: "+X.p(                  0L));
  System.out.println("                  1: "+X.p(                  1L));
  System.out.println("                  9: "+X.p(                  9L));
  System.out.println("                 10: "+X.p(                 10L));
  System.out.println("                 11: "+X.p(                 11L));
  System.out.println("                 12: "+X.p(                 12L));
  System.out.println("                 13: "+X.p(                 13L));
  System.out.println("                 14: "+X.p(                 14L));
  System.out.println("                 15: "+X.p(                 15L));
  System.out.println("                 16: "+X.p(                 16L));
  System.out.println("                 17: "+X.p(                 17L));
  System.out.println("                 18: "+X.p(                 18L));
  System.out.println("                 19: "+X.p(                 19L));
  System.out.println("                 20: "+X.p(                 20L));
  System.out.println("                 27: "+X.p(                 27L));
  System.out.println("                100: "+X.p(                100L));
  System.out.println("                111: "+X.p(                111L));
  System.out.println("                123: "+X.p(                123L));
  System.out.println("               1000: "+X.p(               1000L));
  System.out.println("               1002: "+X.p(               1002L));
  System.out.println("               4521: "+X.p(               4521L));
  System.out.println("              34567: "+X.p(              34567L));
  System.out.println("             230518: "+X.p(             230518L));
  System.out.println("            1000000: "+X.p(            1000000L));
  System.out.println("            2000000: "+X.p(            2000000L));
  System.out.println("            4234507: "+X.p(            4234507L));
  System.out.println("           11201514: "+X.p(           11201514L));
  System.out.println("          145234567: "+X.p(          145234567L));
  System.out.println("         1000000000: "+X.p(         1000000000L));
  System.out.println("      1000000000000: "+X.p(      1000000000000L));
  System.out.println("   1000000000000000: "+X.p(   1000000000000000L));
  System.out.println(" 987000000000000001: "+X.p( 987000000000000001L));
  System.out.println("9223372036854775807: "+X.p(9223372036854775807L));
 }
}

class X{static String _,I="zig",l="zehn",J="illi",í="m"+J,ì="b"+J,f="arde",a=
"sech",b="sieb",c="ach",î[]=new String[]{_,"ein","zwei","drei","vier","fünf",a
+"s",b+"en",c+"t","neun"},T[]=new String[]{_,l,"zwan"+I,î[3]+"ßig",î[4]+I,î[5]
+I,a+I,b+I,c+I,î[9]+I},L[]=new String[]{l,"elf","zwölf",_,_,_,a+l,b+l,c+l},$[]
=new String[]{"","tausend",í+"on",í+f,ì+"on",ì+f,"tr"+J+"on"};static String p(
long n){return(n==0?""+_:p(n,0));}static String p(long n,int k){String r="";if
(n%1000==0)return p(n/1000,k+1);int h=(int)(n%1000)/100;int t=(int)(n%100)/10;
int o=(int)(n%10);if(h>0)r+=î[h]+"hundert";if(t>0){if(t==1){if(o%6<3)r+=L[o];
else r+=î[o]+l;}else if(o==0)r+=T[t];else r+=î[o]+"und"+T[t];}else if(o>0)r+=î
[o];if(k<2)r+=$[k];else if(o==1&&t==0)r+="e"+$[k];else if(k%2==0)r+=$[k]+"en";
else r+=$[k]+"n";if(n/1000!=0)r=p(n/1000,k+1)+r;return r;}}
```


----------



## 0x7F800000 (6. Feb 2009)

[schild=1]stevg mag Schilder![/schild]
sorry für offtopic


----------



## Ebenius (6. Feb 2009)




----------



## 0x7F800000 (6. Feb 2009)

keine Ahnung. Es war jedenfalls nicht wesentlich hilfreicher als
[schild=1]class X{static String _,I="zig",l="zehn",J="illi",í="m"+J,ì="b"+J,f="arde",a=
"sech",b="sieb",c="ach",î[]=new String[]{_,"ein","zwei","drei","vier","fünf",a
+"s",b+"en",c+"t","neun"},T[]=new String[]{_,l,"zwan"+I,î[3]+"ßig",î[4]+I,î[5]
+I,a+I,b+I,c+I,î[9]+I},L[]=new String[]{l,[/schild]

sieht aber cool aus, ich glaub' man könnte obfuscierten highlighteten java-code zu dekorativen Zwecken als tapete verwenden


----------



## Quaxli (6. Feb 2009)

[schild=1](das war jetzt kein javacode)[/schild]

Mein Favorit in diesem Thread  :wink:


----------



## ARadauer (6. Feb 2009)

warum antwortet bbnvacx auf 5 jahre alte threads?


----------



## Marco13 (6. Feb 2009)

Vermutlich will er bewirken, dass sein Counter erhöht wird: 
_new Forum("Javaforum.org").incPosting("bbnvacx",1);_
Wenn er jedes mal ein neues Forum-Objekt erstellt, wird das aber nichts :?


----------



## bbnvacx (6. Feb 2009)

Oh, ich ändere das schnell


----------



## bbnvacx (6. Feb 2009)

www.java-forum.org/de/userfiles.php?msgcode=1

dann auf 19toNineteen.zip und download  :wink:


----------



## Ebenius (6. Feb 2009)

bbnvacx hat gesagt.:
			
		

> www.java-forum.org/de/userfiles.php?msgcode=1



:roll: Log Dich doch mal aus und klick auf den Link... :roll:


----------



## Guest (6. Feb 2009)

Oh! Wie mach ich das dann?


----------



## bbnvacx (6. Feb 2009)

Ups, als Gast gepostet!


----------



## Ebenius (6. Feb 2009)

Geh in Deine Eigenen Dateien, rechtsklick auf die Datei die Du verlinken möchtest, und dann die Zieladresse kopieren...


----------



## bbnvacx (6. Feb 2009)

Ist das hier besser?


----------

