"Sprachausgabe" für Zahlen

Status
Nicht offen für weitere Antworten.

SirAndy

Mitglied
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.
 
S

stev.glasow

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

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

SirAndy

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

...
 
S

stev.glasow

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

SirAndy

Mitglied
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 :(
 
S

stev.glasow

Gast
[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.
Code:
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:
Code:
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

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

Marco13

Top Contributor
Hatte das auch mal gebastelt. Und aus irgendeinem Grund obfuskiert.
Code:
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;}}
 

Ebenius

Top Contributor
text2schild.php
 

0x7F800000

Top Contributor
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]
:p
sieht aber cool aus, ich glaub' man könnte obfuscierten highlighteten java-code zu dekorativen Zwecken als tapete verwenden :)
 

Marco13

Top Contributor
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 :?
 

Ebenius

Top Contributor
Geh in Deine Eigenen Dateien, rechtsklick auf die Datei die Du verlinken möchtest, und dann die Zieladresse kopieren...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben