Ich brauche dringend Hilfe und einen Lösungsweg:
„Es soll die Funktioncheckziffer () entwickelt werden, die in der Lage ist, zu prüfen, ob eine bestimmte Ziffer (als Parameter zu übergeben) in einer beliebigen Dezimalzahl enthalten ist. Die zu überprüfende Dezimalzahl soll genau 3 Nachkommastellen besitzen. Checkziffer () soll das Ergebnis einen boolischen Wert liefern.“
Dieses sollte eine Funktion ergeben und wurde durch unseren Lehrer so vorgegeben!
Vielen Dank für Eure Mühe!"
MfG Conni
Hallo Conni,
wie man eine Funktion deklariert, sollte doch klar sein (hängt ab von der Sprache, die du verwendest, und die hast Du ja nicht genannt).
Was muß die Funktion machen:
„prüfen, ob eine bestimmte Ziffer (…) in einer beliebigen Dezimalzahl enthalten ist.“
Das läßt sich am einfachsten lösen, wenn dur die zu findende Ziffer als Zeichen (char, character, string, …) nimmst und auch die Dezimalzahl als Zeichenkette (string, array of char, …). Um Zahlen in Zeichenketten umzuwandeln, bieten Programmiersprachen üblicherweise Funktionen an (zB. FloatToStr oder so ähnlich). Auch für das Suchen einer Zeichenkette (also der Ziffer) in einer anderen (also der Zahl) gibt es Funktionen (zB. Pos). Das sollte als Lösungsweg reichen.
Alternativ kannst du ach die Mathematik bemühen, das ist aber komplizierter: In einer Schleife zählst Du einen Zähler runter, und zwar für jede Stelle der Dezimalzahl (bei 5234.239 also von +3 bis -3, weil 10³ für die Tausender, 10² für die Hunderter usw. bis 10-³ für die Tausenstel). In dieser Schleife berechnest du die entsprechende Potenz von 10. Diese Potenz soll der „Teiler“ sein. Die Zahl teilst du durch diesen Teiler. Speichere den Bruch als Zwischenergebnis. Ermittele den Vorkomma-Anteil (dafür gibt es Funktionen, zB. Int). Teste, ob diese Ganzzahl gleich der Ziffer ist. Wenn ja, brich die Schleibe ab und gib „gefunden!“ zurück. Wenn nein, dann subtrahiere von der Zahl das Produkt aus dem „Teiler“ und der Ganzzahl. Damit verschindet die erste Ziffer der Zahl. Jetzt beginnt die Schleife von vorne für die nächste Dezimalstelle. Wenn am Ende die Schleife durchgelaufen ist, ohne abgebrochen worden zu sein, dann wurde die Ziffer nicht gefunden.
LG
Jochen
Doppelposting -> Informatik owT
.
Läßt du deine Hausaufgaben immer machen owT *g*
…
in VBA: Instr ggfs noch Cstr o.w.T.
Hallo Conni, hallo Jochen,
Was muß die Funktion machen:
„prüfen, ob eine bestimmte Ziffer (…) in einer beliebigen
Dezimalzahl enthalten ist.“Das läßt sich am einfachsten lösen, wenn dur die zu findende
Ziffer als Zeichen (char, character, string, …)
nimmst und auch die Dezimalzahl als Zeichenkette (string,
array of char, … ). Um Zahlen in Zeichenketten
umzuwandeln, bieten Programmiersprachen üblicherweise
Funktionen an (zB. FloatToStr oder so ähnlich). Auch
für das Suchen einer Zeichenkette (also der Ziffer) in einer
anderen (also der Zahl) gibt es Funktionen (zB. Pos).
Das sollte als Lösungsweg reichen.
Wenn man dann schon mit Zeichenketten hantiert, lässt sich
die Aufgabe mit regulären Ausdrücken am elegantesten erledigen:
$ perl -e '$x=3;$y=0.373; die "Got invalid number $y (must be a float with 3 decimal places)!\n" if $y !~ /^[0-9]+\.[0-9]{3}$/; die "$x is not a single digit\n" if $x !~ /^[0-9]$/; $result = ($y=~/$x/) ? "Found" : "Did not found"; print "$result digit $x in $y\n";'
Eigentlich ist die Hausaufgabe hiermit erledigt. Wenn die Posterin
den obigen Code ihrem Lehrer dann noch flüssig erklären kann,
wird dieser bestimmt keine Einwände gegen meine kleine
Hilfestellung haben
Schmunzelnde Grüße,
-Andreas.