erste Ziffer von Zahlen < MuPad < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:47 Fr 07.07.2006 | Autor: | mechanix |
Aufgabe | Wie kann man die erste Ziffer einer Zahl in eine Variable bei Mupad überführen? |
#
# Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo,
ich habe etwas mit Mupad herumexperimentiert und wollte die erste Ziffer einer Zufallszahl, von der ich nicht die Länge habe, in eine Variable überführen.
BTW: Ich kann nur Prozeduren mit meinem Mupad-Light schreiben.
In dem Fall wollte ich ausprobieren, ob das Benford-Gesetz auch für diese Zufallszahlen von Mupad gilt.
Wenn das negativ sein sollte, werde ich eine andere Liste zu rate ziehen, vielleicht eine Liste mit Primzahlen oder so...
Hier mal der erste Versuch des wichtigsten Teiles der Prozedur:
erste:=x[0];
case erste
of "1" do; eins:=eins+1; break;
of "2" do; zwei:=zwei+1;break;
of "3" do; drei:= drei+1;break;
Das geht offenbar nicht, weil durch das x[0] vermutlich ein falscher Datentyp ist, und in der Ausgabe immer "" hat, bzw. nur dann funktioniert, wenn man die ausgabe auch in "" gesetzt hat...
vielen Dank im vorraus
Mechanix
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:52 So 16.07.2006 | Autor: | mechanix |
Ich habe das Problem jetzt selber gelöst: Auf simple Weise immer durch 10 ohne Rest geteilt, bis die Zahl kleiner ist als 10.
repeat
zaehler2:=zaehler2+1;
x:=x div 10;
until x < 10
end_repeat;
Der einzige Nachteil ist, dass man dazu nur Integer-Zahlen verwenden kann. Das kann man aber mit "round" erzeugen.
Gruß
mechanix
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 01:53 Do 05.07.2007 | Autor: | Ray |
Lösung mittels Stringmanipulation
Z:= -4/3:
' Mit Vorzeichen' = text2int(stringlib::formatf(float(Z),1)[1..2]);
' Ohne Vorzeichen' = text2int(stringlib::formatf(float(Z),1)[2..2]);
Mit dieser Lösung erhält man die am weitesten links vom Komma liegende Ziffer. Werte kleiner 0 ergeben die Ziffer 0.
|
|
|
|