Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Busyman •-->


Anmeldedatum: 16.09.2001 Beiträge: 64 Wohnort: Ostwestfalen
|
Verfasst am: 27.04.2002 - 15:27 Titel: Zahl ungewöhnlich herunterrechnen, nur wie? - Es geht bestim |
|
|
Hallo,
sagen wir ich habe eine Zufallszahl wie 11050. Es ist nur ein Beispiel, die Zahl kann auch mehr Ziffern haben. Nun möchte ich jedes Paar aufeinanderfolgender Ziffern addieren, so daß sich eine neue Zahl ergibt (aus 11050 wird 2155 -> 1+1=2, 1+0=1, 0+5=5, 5+0=5). Diese Vorgehensweise soll so oft wiederholt werden, bis ich nur noch eine Zahl habe, die aus 2 Ziffern besteht.
Ich weiß, daß man eine deratige Routine scripten kann, da bin ich mir ganz sicher, nur will mir momentan so gar nicht einfallen, wie man das im Detail anstellt.
Hat jemand von Euch eine Idee? Wäre klasse!
Martin
(Geändert von Busyman um 15:29 Uhr am 27 April 2002) |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 27.04.2002 - 19:33 Titel: Zahl ungewöhnlich herunterrechnen, nur wie? |
|
|
Hi Martin,
eine Idee habe ich schon. Das Skript soll auf jeden Fall so lange laufen, bis die Zahl zweistellig ist - also kleiner 100. Das wäre schon mal eine Abbruchbedingung für eine Schleife.
Da nicht bekannt ist, wie lange die Zahl ist, wandle ich sie in einen Text um und zähle die Zeichen. -- Ach was! Schau's dir einfach mal an:
set x to 11050
repeat until x < 100
copy x as text to xt
set tl to (count text items of xt) - 1
log "Länge: " & tl
set x to add_x(x, tl, xt)
end repeat
on add_x(x, tl, xt)
set counter to 1
set y to { }
repeat tl times
set the end of y to ¨
((text item counter of xt) as number) + ((text item (counter + 1) of xt) as number)
set counter to counter + 1
log (y as string) as number
set x to (y as string) as number
end repeat
end add_x
Also mit deiner Zahl funktioniert das ja schon ganz gut. Was soll aber geschehen, wenn durch die Addition zweier benachbarter Zahlen eine zweistellige Zahl resultiert.
Ein weiteres Problem ist, dass es nicht mehr läuft sobald die wissenschaftliche Zahlendarstellung verwendet wird.
Der Fehler tritt dann hier auf:
set the end of y to ¨
((text item counter of xt) as number) + ((text item (counter + 1) of xt) as number)
--> Can't make "," into a number.
Mit dem Komma ist der Punkt in z.B. einer solchen Zahl gemeint: 1.210510101E+9
Um diese Darstellungsweise zu verhindern, findest du einen entsprechenden Handler in meinem Artikel Zahlen runden. Den könntest du ja noch in das Skript einbeziehen.
Ich hoffe, das war Anregung genug. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 22:04, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Busyman •-->


Anmeldedatum: 16.09.2001 Beiträge: 64 Wohnort: Ostwestfalen
|
Verfasst am: 27.04.2002 - 21:53 Titel: Zahl ungewöhnlich herunterrechnen, nur wie? |
|
|
Hallo Peter,
nach einem Tag des Grübelns und erfolglosen Suchens ist Deine Routine ein wahrer Quell der Erkenntnis. Das macht mir ja Hoffnung darauf, daß es am Ende doch noch mit meiner Routine klappt. Im Grunde hört sich die ganze Geschichte nicht besonders schwer an, auf dem Papier läßt sich das relativ schnell ausrechnen. Nur als "informatisches" Problem ist es (jedenfalls, wenn man es mit AS probiert) anscheinend recht komplex. Werde mich jetzt einmal in Ruhe hinsetzen, mir die Routine anschauen und dann überlegen, wie ich genau vorgehe. Die Lösung, gibt es dann eine, wird natürlich hier veröffentlicht :biggrin:
Dankend,
Martin |
|
Nach oben |
|
 |
Busyman •-->


Anmeldedatum: 16.09.2001 Beiträge: 64 Wohnort: Ostwestfalen
|
Verfasst am: 27.04.2002 - 21:57 Titel: Zahl ungewöhnlich herunterrechnen, nur wie? |
|
|
Fast vergessen:
Die Probleme, die Du beschreibst, sind natürlich genau die, welche mich schon den ganzen Tag quälen Aber irgendwie muß das realisierbar sein, denn anscheinend geht es mit JavaScript vorzüglich. Nur habe ich keinen blassen Schimmer, mit welchen Routinen dort gearbeitet wird. Na, noch ist ja nicht Hopfen und Malz verloren...
Martin |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 28.04.2002 - 00:18 Titel: Zahl ungewöhnlich herunterrechnen, nur wie? |
|
|
Hallo Martin,
ich denke, du musst auf jeden Fall eine Funktion einbauen, die verhindert, dass die Zahlen zu groß werden. So wie es im Moment abläuft, kann es durchaus vorkommen, dass sehr hohe Zahlenwerte entstehen (eigentlich sollten sie doch immer kleiner werden). Die Wertebereiche für Zahlen in AppleScript sind aber beschränkt (siehe MacScripter's Magazine 2 - Kapitel 1 - Zahlenwerte).
Wenn diese Wertegrenzen erreicht werden, hilft auch nicht der Handler, der die wissenschaftliche Zahlendarstellung verhindert. Bei der Verwendung dieses Handlers muss man übrigens aufpassen, falls das Skript international verwendbar sein soll. Bei der Umwandlung der Zahl in einen Textwert wird das Dezimaltrennzeichen "übersetzt".
Beispiel:
Zahl: 1.23456789E+9
wird als Text zu:
1,23456789+9
Der Punkt wird also zum Komma. Im Handler wird nach dem offset-Wert von "," gesucht. Das funktioniert auf einem deutschen System auch, da hier in der Regel das Komma als Dezimaltrennzeichen verwendet wird. Auf einem US-System geht diese Suche aber ins Leere (dort wird der Punkt benutzt).
Alles nicht so einfach!
Aber immer bleiben. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|
|
|