oeztuerk_42
Anmeldungsdatum: 19. Mai 2019
Beiträge: 25
|
Hallo, ich habe ein Problem. Ich soll ein Skript schreiben welche die eingegebene Zahl in Buchstaben umwandeln soll(z.b 1 zu Eins). Das Programm konnte ich schon auf der c++ sprache schreiben aber da ich in der bash Programmierung neu bin, weis ich nicht weiter wie ich das Programm in die bash Programmierung umsetzen soll. Ich hoffe mir kann jemand weiter helfen. Vielen Dank!
|
Prof._Frink
Anmeldungsdatum: 29. Mai 2010
Beiträge: 1096
|
|
oeztuerk_42
(Themenstarter)
Anmeldungsdatum: 19. Mai 2019
Beiträge: 25
|
Danke für die schnelle Antwort aber das Problem ist dass der Benutzer eine Zahl eingeben wird und dann die Zahl ausgeschrieben werden soll.
Das Sript sollte auch größere Zahlen beherschen.
|
Prof._Frink
Anmeldungsdatum: 29. Mai 2010
Beiträge: 1096
|
printf "\x$(printf %x 65)"
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11180
Wohnort: München
|
oeztuerk_42 schrieb: Ich soll ein Skript schreiben welche die eingegebene Zahl in Buchstaben umwandeln soll(z.b 1 zu Eins). Das Programm konnte ich schon auf der c++ sprache schreiben aber da ich in der bash Programmierung neu bin, weis ich nicht weiter wie ich das Programm in die bash Programmierung umsetzen soll.
Da du dir die Arbeit für den Algorithmus schon gemacht hast, kannst du dir vergleichbare Konstrukte im Handbuch für die Bash und dem Advanced Bash-Scripting Guide zusammensuchen. Viel mehr als Schleifen, Tests, Arrays, ein bisschen Stringmanipulation und Shell-Arithmetik dürfte man dafür nicht brauchen. Prof._Frink schrieb: printf "\x$(printf %x 65)"
Ich glaube im Sinne der Aufgabenstellung sollte da eher "fünfundsechzig" statt "A" herauskommen.
|
Prof._Frink
Anmeldungsdatum: 29. Mai 2010
Beiträge: 1096
|
seahawk1986 schrieb: Ich glaube im Sinne der Aufgabenstellung sollte da eher "fünfundsechzig" statt "A" herauskommen.
s. mein erster Post.
|
Naubaddi
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 744
|
Hi, oeztuerk_42 schrieb: ich habe ein Problem. Ich soll ein Skript schreiben welche die eingegebene Zahl in Buchstaben umwandeln soll(z.b 1 zu Eins). Das Programm konnte ich schon auf der c++ sprache schreiben...
wenn Du es in c++ oder eine andere Sprache kannst sollte es doch kein Problem sein 😉 , die Aufgabe bleibt die Gleiche es ändert sich nur die Syntax. Da hilft z.B. das Ubuntuusers Wiki, Selflinux..., und wenn nix mehr geht hier fragen. Da ich so etwas bestimmt auch mal brauchen kann, gibt es jetzt folgendes Skript in meiner Sammlung. Meinst Du vielleicht so etwas?: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 | #!/bin/bash
#
# --- Infos ----------------------------------------------------------------------------------------------------
#
# Scriptname Zahlen-ausschreiben.sh
# Funktion eine Zahl ausschreiben
#
# benötigt bash
#
# Status noch in Arbeit ( wer wird schon fertig??? )
# Fehler keine, oder??? ( Naubadi is pörfekt )
#
# Start 20.05.2019
# Stand 20.05.2019
#
# --- Variablen (den Inhalt der Variablen bei Bedarf ändern) ---------------------------------------------------
#
beenden="q" # die Taste die für beenden gedrückt werden soll
#
bis9="null eins zwei drei vier fünf sechs sieben acht neun"
bis99="zehn zwanzig dreißig vierzig fünfzig sechzig siebzig achtzig neunzig"
und="und"
#
# --- Funktionen -----------------------------------------------------------------------------------------------
#
function einer_umwandeln { # Funktion für Einer
i=0 # ein Zähler
zahl="" # Variable für die ausgeschriebe Zahl
for such in $bis9 ; do # die ausgeschriebene Zahl suchen
if [ "$i" = $einer ] ; then # wenn es die Zahl ist
einer="$such" # die ausgeschriebene Zahl übernehmen
fi # Ende von if such
((i+=1)) # $i um 1 erhöhen
done ; } # Ende von der function einer
#
function zehner_umwandeln { # Funktion für Zehner
i=1 # ein Zähler
zahl="" # Variable für die ausgeschriebe Zahl
for such in $bis99 ; do # die ausgeschriebene Zahl suchen
if [ "$i" = $zehner ] ; then # wenn es die Zahl ist
zehner="$such" # die ausgeschriebene Zahl übernehmen
fi # Ende von if such
((i+=1)) # $i um 1 erhöhen
done ; } # Ende von der function zehner
#
# --- Script Anfang --------------------------------------------------------------------------------------------
#
eingabe="" # eine Variable für die Eingabe
clear # den Terminal-Bildschirm löschen
#
while [ "$eingabe" != $beenden ] ; do # Schleife für die Eingabe
echo -n "Einfach etwas eingeben 'q' für beenden: " # Text anzeigen "-n" = kein CR/LF
read -r eingabe # auf eine Eingabe warten, Return beendet die Eingabe
case $eingabe in # Eingabe auswerten
11) echo "elf" ;; # Sonderfall 11
12) echo "zwölf" ;; # Sonderfall 12
13) echo "dreizehn" ;; # Sonderfall 13
14) echo "vierzehn" ;; # Sonderfall 14
15) echo "fünfzehn" ;; # Sonderfall 15
16) echo "sechszehn" ;; # Sonderfall 16
17) echo "siebzehn" ;; # Sonderfall 17
18) echo "achtzehn" ;; # Sonderfall 18
19) echo "neunzehn" ;; # Sonderfall 19
?) einer=$eingabe # eine einstellige Zahl
einer_umwandeln # zur function einer_umwandeln
echo "--> $einer" ;; # Ende von ?) einer=$eingabe
??) zehner=${eingabe:0:1} # eine zweistellige Zahl
zehner_umwandeln # die function zehner_umwandeln aufrufen
einer=${eingabe:1:1} # eine zweistellige Zahl
einer_umwandeln # die function zehner_umwandeln aufrufen
if [ ${eingabe:1:1} = 0 ] ; then # wenn die Zahl rund ist
echo "--> "$zehner # nur die Zehner ausgeben
else # sonst
echo "--> "$einer"und"$zehner # die Einer und Zehner ausgeben
fi ;; # Ende von ??) zehner=${eingabe:0:1}
esac # Ende von case $eingabe
echo # Leerzeile
done
#
# --- Skript Ende ----------------------------------------------------------------------------------------------
#
|
Grüßle, Naubaddi
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12832
|
Naubaddi schrieb:
Meinst Du vielleicht so etwas?:
Bitte keine Hausaufgabenlösungen posten!
|
Naubaddi
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 744
|
Hi, den Beitrag kann ich nicht mehr ändern, kann bitte ein MOD das Skript entfernen. Die Idee hat mir so gut gefallen, dabei ist mir wohl entgangen das es eine Hausaufgabe ist. Wer lesen kann ist klar im Vorteil. Grüßle, Naubaddi
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
oeztuerk_42 schrieb: ich habe ein Problem. Ich soll ein Skript schreiben welche die eingegebene Zahl in Buchstaben umwandeln soll(z.b 1 zu Eins). Das Programm konnte ich schon auf der c++ sprache schreiben aber da ich in der bash Programmierung neu bin, weis ich nicht weiter wie ich das Programm in die bash Programmierung umsetzen soll.
Du müsstest schon spezifischer fragen. Wir kennen ja Dein C++-Programm nicht. Ist es sehr objektorientiert? Wenn nicht, kann man es wahrscheinlich blockweise in Shellcode übersetzen, dann wäre die Frage, welche Konstrukte genau Dir Probleme bereiten (alle?). Wenn Du Deinen C++-Code zeigst sehen wir auch, was Du schon verstanden hast. Wenn Du einen Teil der Aufgabe in Bashcode schon hast wäre das auch interessant.
|
oeztuerk_42
(Themenstarter)
Anmeldungsdatum: 19. Mai 2019
Beiträge: 25
|
Ich danke für die Antworten und Naubaddi Danke für deine Lösungsvorschlag genau das meinte ich ☺
Das meiste habe ich eigentlich schon hinbekommen nur bei der Ausgabe möchte ich das alles in einer Zeile steht. Aber bei meiner Ausführung steht die Lösung untereinander.
Wenn ich z.B. 22 eingebe kommt des raus:
zwei
und
zwanzig Hoffe ihr könnt mir weiterhelfen ☺
|
oeztuerk_42
(Themenstarter)
Anmeldungsdatum: 19. Mai 2019
Beiträge: 25
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11180
Wohnort: München
|
Der Anhang scheint zu fehlen - du musst den hochladen lassen, bevor du den Post veröffentlichst. Zur Ausgabe ohne Zeilenumbruch kannst du echo -n "Mein String oder printf "%s" "Mein String" nutzen.
|
oeztuerk_42
(Themenstarter)
Anmeldungsdatum: 19. Mai 2019
Beiträge: 25
|
ups jetzt hier ist mein Anhang
- Bilder
|
oeztuerk_42
(Themenstarter)
Anmeldungsdatum: 19. Mai 2019
Beiträge: 25
|
seahawk1986 schrieb: Der Anhang scheint zu fehlen - du musst den hochladen lassen, bevor du den Post veröffentlichst. Zur Ausgabe ohne Zeilenumbruch kannst du echo -n "Mein String oder printf "%s" "Mein String" nutzen.
Vielen Dank mit dem -n ist alles jetzt in einer Zeile. ☺
Naubaddi dir auch vielen Dank, deine Lösung hat mir auch sehr weitergeholfen ☺
|