classico/rechenbefehl

Bernhard Eversberg ev at buch.biblio.etc.tu-bs.de
Do Dez 11 08:29:41 CET 2003


On 11 Dec 03, at 7:06, Manfred Weichert wrote:

> der Exportbefehl:
> #dt y0 p"9,51" e3 =z1 e0
> #uz1 y0 x"r0"
> 
> erzeugt die Ausgabe "1", nicht wie erwartet "10".
> So das Ergebnis für alle Werte zwischen 9,5 und 9,9.
> Das Abrunden (10<z1<10,4) klappt.
> Liegt es an der älteren (1999) Version von allegro.exe mit der ich 
> arbeite. Oder wird das Rechnen mit presto (hier Version März 
> 2003) gemacht?
> 
Zuerst: allegro.exe hat hiermit nichts zu tun! Es kann geloescht werden, denn es 
ist ein veraltetes Programm von nur noch historischem Wert, und im Gesamtpaket 
nicht mehr erhalten. (Verwechseln Sie nicht den Namen "allegro.exe" mit dem 
Begriff "allegro-C"!) Die in Frage stehende Arbeit wird allein von presto.exe 
gemacht.

Aber zum Problem: in der Tat, und das war noch nie aufgefallen, muss hier ein 
Fehler des fuer "classico" verwendeten Compilers vorliegen. Denn a99 macht diesen 
Fehler nicht, der dahinter steckende C-Programmcode ist aber voellig identisch.
Ich fuerchte, da koennen wir nichts machen! Passieren tut es nur beim Runden auf 
ganze Zahl, wenn die sich ergebende Zahl dann am Ende eine 0 hat. Die nimmt das 
Programm weg. Wenn 100 rauskommt, macht es 10 draus. Wie gesagt, Compilerfehler, 
da koennen wir nichts gegen tun. Sehr seltener Fall. Einen anderen Compiler 
finden, das wird nicht mehr moeglich sein bei den alten Programmen, der Aufwand 
fuer die Umstellung und das Testen waere viel zu hoch.
Wenn aber wirklich und unbedingt mit presto eine Rundung auf ganze Zahl gemacht 
werden soll, kann man zu diesem Trick greifen (soeben getestet):

#uz1 y0 x"/10" x"r1" x"*10" e"."     statt #uz1 y0 x"r0"

also erst Division durch 10, dann Rundung auf eine Kommastelle, dann 
Multiplikation mit 10, dann Abschneiden am Punkt. Aechz...
Oder a99 einsetzen.

B.E.


Bernhard Eversberg
Universitaetsbibliothek, Postf. 3329, 
D-38023 Braunschweig, Germany
Tel.  +49 531 391-5026 , -5011 , FAX  -5836
e-mail  B.Eversberg at tu-bs.de  




Mehr Informationen über die Mailingliste Allegro