Ultra schwere Java Aufgabe für echte Programmierprofis, brauche Hilfe voll schwer Siehe Foto?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

So schwer ist das gar nicht, eher aufwändig.

Eine Herangehensweise wäre, zunächst mal eine Methode zu implementieren, die Zahlen in Wortform ausgibt.

Dabei wäre zwar ein paar Sonderfälle zu berücksichtigen (z.B. "elf" und "zwölf" statt "einzehn" und "zweizehn"), aber das grobe Muster wäre (Bindestriche nur zur Veranschaulichung):

  • ein-s
  • zwei
  • ...
  • ein-hundert
  • zwei-hundert
  • ...
  • ein-hundert-ein-s
  • zwei-hundert-zwei
  • ...
  • ...

Dann gehst du in einer Schleife (z.B. for) von 1 bis n durch, generierst zu jeder Zahl die Wortentsprechung und addierst deren Länge auf einen Zähler auf.


Nichtsnutz12 
Fragesteller
 16.01.2020, 13:03

ok was ist mit den diversen Sonderfällen wie zwanzig, dreißig, oha v

0
Isendrak  16.01.2020, 16:03
@Nichtsnutz12

Die sind selbstverständlich ebenfalls zu berücksichtigen.

Um an die Zehnerstelle zu kommen könntest du z.B. so vorgehen:

int zahl = 1234;
int einer = zehl % 10;
int zehner = (zahl / 10) % 10;
switch(einer){
    case 1:
        irgendwas_sinnvolles(zehner>1?"einund":"elf");
        break;
    case 2:
        irgendwas_sinnvolles(zehner>1?"zweiund":"zwölf");
   //usw...
}
switch(zehner){
    case 1:
        if(einer < 3) break;
        irgendwas_sinnvolles("zehn");
        break;
    case 2:
        irgendwas_sinnvolles("zwanzig");
        break;
    case 3:
        irgendwas_sinnvolles("dreißig");
        break;
    //usw...
}

Das ganze so als grobe Skizze. Musste natürlich noch ein paar Sonderfälle beachten, aber im groben wäre das eine Herangehensweise.

1

Was ist daran genau schwer? Bzw. wo kommst Du nicht weiter? o_O

Da steht doch, was Du machen sollst!

PS mit Integer festlegen und die Buchstaben ausrechnen, usw... Formatierung ist auch angegeben! Also? Leg los!!!

Woher ich das weiß:Hobby – Programmierer, EDV, ... seit den 80er :)

Senbu  15.01.2020, 17:38

Weil man nachdenken muss und es arbeiten bedeutet. Die heutige Jugend will etwas können ohne lernen oder arbeiten zu müssen. Sowas wie test, Fehler, beheben, test, Fehler, beheben,... kennen und wollen die nicht. Wenns beim ersten Mal nicht klappt, dann ist das entweder Götter level oder jemand soll die Aufgabe für sie lösen.

2
Davo2020  15.01.2020, 19:48
@Senbu

Deine Aussage ist ganz schön diskriminierrend und Klischeehaft, findest du nicht?

Zu der Jugend von heute gehören Millionen und du bewertest sie alle (wer auch immer dich hierfür als kompetent ernannt hat) anhand eines nicht repräsentativen Beispiels!

1
Senbu  15.01.2020, 20:42
@Davo2020

Ich habe es gesagt, weil es selbst noch nicht so lange her ist, dass ich zur Schule ging und dort die Arbeitsmoral sehr niedrig war. Heutzutage berichten mir meine Arbeitskollegen von ihren Kindern und dessen Kameraden ähnliches. Viele die ich sonst so traf waren ähnlich drauf. Vlt 1 von 10 war gut und 3 brauchbar. Auf Gutefrage sind meisten nur Leute unterwegs, die keinen Willen, Ziel oder sonst was haben. Die machen das oft nur um zu Trollen, sich etwas Arbeit zu ersparen usw...

Natürlich rede ich nur von eigenen oder fremden Erfahrungen, da ich sonst eine Studie oder ähnliches verlinken würde. Ich verallgemeinere nicht, ich stelle lediglich Vermutungen aufgrund von Erfahrungswerten auf und benutzte diese Vermutungen. Haben die meisten Menschen Kot gegessen oder woher kommt es, dass die meisten meinen zu wissen es schmeckt eklig? Das kommt von der Verarbeitung von Informationen... So ähnlich wie Studien nur für Normalsterbliche ohne besondere Titel.

2
PeterP58  15.01.2020, 23:33
@Senbu

Die Jugend ist mit allem überfordert, obwohl es doch das Internet (inkl. google/wiki) gibt. Hatten wir damals nicht! :-(

Pff, ... dazu hatte ich auch kürzlich eine Frage gestellt, wieso die "Jugend" die "Alten" unterschätzen ...

Also ich kann das alles :-) Zwar nicht in der Schule gelernt aber bin jetzt schon seit über 20 Jahren online! Ich "zauber" Dir nicht nur eine "Homepage", sondern ich kann auch "Websites" mit Datenbank-Anbindung und Design.

Und brauchst Du eine eigene App ... also für mich als "alter Sack" kein Problem.

Andere studieren das, ich "Alter Mann" kann das :-)

Mich erkennt man an dem langem Bart! Ich stehe in der VHS oder in der UNI und bringe das "der Jugend" bei wie das geht ^^+gg

1
Davo2020  21.01.2020, 21:01
@Senbu

Also wie gesagt deine äußerst subjektive Einschätzung basiert auf Vorurteilen, wahrscheinlich würde die ältere Generation auf ähnliche Weise kritisiert.

Außerdem ist ich deine Absicht bei dieser Frage so eine Kritik zu äußern nicht unbedingt nachvollziehbar. Zudem widerlegt die Tatsache, dass der Fragesteller 7 Stunden investiert hat deine unbelegte Vermutung.

Peace

0
Senbu  21.01.2020, 22:42
@Davo2020

Viel Spaß beim Erstellen von Studien über alles was gerade so in Frage kommt, da sonst Vorurteile. Woher wissen sie das meine Einschätzung Subjektiv ist? Bitte die Studie dazu, danke.

Wenn er 7h hierfür gebraucht hat und immer noch nicht fertig ist, dann fehlt ihm Wissen um diese Aufgabe zu bewältigen oder er macht es nur halbherzig und denkt, wenn er nein sagt bekommt er es hier erklärt. Es könnte auch sein, dass er unfähig ist Google zu benutzen um für sein bestehendes Problem eine Lösung zu finden.

Im 7h hätte man sich auf Google die fehlenden Befehle raussuchen können und Lösungen für die eigenen Logik Fehler suchen können. So schwer ist die Aufgabe jetzt nicht.

Ich kann auch 7h mich hinsetzen, so machen als ob ich etwas produktives machen würde und am Ende nichts verstehen und auch nichts erledigt haben... so sah damals der Reli und Kunstunterricht aus. So tun als ob man was macht aber in Wirklichkeit macht man nichts produktives und kopiert nur das vom Nachbarn.

0

In einem array von 0 - 9 kannst du den Text entsprechend zuweisen ZahlText[0]=""... ZahlText[1]="eins"...ZahlText[2]="zwei"...

eine schleife mit i= 1 bis i=n.

Dort dann jede Ziffer von i in ZahlText[] suchen. Und Ausnahmen abfragen, wie 10, 11, 12... Alle 2-ziffrigen Zahlen (10-99) separat abfragen, das "und" und "zig" beachten!

die 100er Stellen sind wieder leichter, also 100 ZahlText[ZifferVon_i] &"hundert"

bei 1000er Stellen entsprechend "tausend" hinzufügen.

Du kannst die für jede Zahl den Text dann zusammenstellen, da du das dann leichter kontrollieren kannst und dann mit .Length dessen Anzahl an stellen abfragen und fortlaufend zusammenzählen.


bluebird5  15.01.2020, 21:20

Wie hoch darf hier eigentlich der höchste Eingabewert sein? Also könnte ich die Funktion auch mit einer fünf-, sechs- oder siebenstelligen Zahl füttern und würde ein Ergebnis kriegen?

Die Frage ist jetzt kein Angriff an dich, die hätte ich unter jede Antwort schreiben können, aber das ist etwas, was man bei der Aufgabe bedenken sollte (und was denke ich mal auch hier ein Fallstrick ist). Ein- und Ausgabewert sind ints, können also höchstens knapp über 2 Milliarden gehen. Da der Ausgabewert aber ziemlich schnell wächst und eher die 2 Milliarden übersteigt, kann man wahrscheinlich eher aufhören und dann etwa mit einer Exception abbrechen.

Was ich eigentlich auch sagen wollte - die Tausenderstelle berechnet sich nicht so einfach "genauso wie die 100er-Stelle", sondern man müsste (jeweils falls vorhanden) die Hundertausender-, die Zehntausender- und die Tausender-Stelle so wie die letzten drei Stellen berechnen.

1