Newsgroup: it.comp.os.linux.iniziare
Titolo: Funzionamento anomalo di Bc?

Il bello script seguente da me da' errore:
(standard_in) 14: syntax error
 
dagli altri gira perfettamente, da cosa puo' dipendere? dalla
versione di Bc e/o di Bash? Io ho la Debian stable, con:
bc 1.06.95
GNU bash, versione 4.3.30(1)-release (i586-pc-linux-gnu)
 
=====================
#! /bin/bash
 
if [ "$1" = "--help" -o "$1" = "" ]; then
echo; cat $0
exit 0
fi
 
xfrom="$1"
xto="$2"
yfrom="$3"
yto="$4"
step="$5"
equ="$6"
max="${7:-3}"
 
bc -l << EOF
for(y = $yto; y >= $yfrom; y -= $step) {
for(x = $xfrom; x <= $xto; x += $step) {
r = $equ;
xsave=x;
if(x==$xfrom) rleft=r else {x=xsave-$step; rleft=$equ;}
if(x>$xto-$step) rright=r else {x=xsave+$step; rright=$equ;}
x=xsave;
ysave=y;
if(y==$yto) rup=r else {y=ysave+$step; rup=$equ;}
if(y<$yfrom+$step) rdown=r else {y=ysave-$step; rdown=$equ;}
y=ysave;
if(r == 0) print "O" else
if(sqrt((rleft-rright)^2) < $max && \
((rleft < 0 && rright > 0) || (rleft > 0 && rright < 0))) print "O"
else
if(sqrt((rup-rdown)^2) < $max && ((rup < 0 && rdown > 0) || \
(rup > 0 && rdown < 0))) print "O" else
if(x == 0 || (x < 0 && x + $step > 0)) print "|" else
if(y == 0 || (y < 0 && y + $step > 0)) print "-" else print "."
}
print "\n"
}
EOF
 
# usage: bcview xfrom xto yfrom yto step "equ(x,y)"
 
(C) by Oliviero Urbani -- olivierourbaniCOMMERCIAL_ATgmail.com
==================
 
 
-- 
  (> '.')>
Oldghost
 

Il bello script seguente da me da' errore:
 
Adesso va, doveva esserci qualcosa per colpa di traduzione
tra iso-8859-1 e utf8. Scusate, come non detto ciao


 tra iso-8859-1 e utf8. Scusate, come non detto ciao
 
Mi hai preceduto di qualche istante; anche a me sulla testing dava
inizialmente lo stesso errore, ma poi ho semplicemente reindentato tutto
lo script, togliendo anche qualche a capo di troppo, ed ora va. :-)
 


Uso molto bc da riga di comando, questo script lo modifichero',
ho gia' cambiato il carattere da O a *, vorrei toglirci la doppia
linea, si puo' raffinare molto ciao!
 
Postilla. Gli esempi che Oliviero mette sono questi:
$ ./bcview -3.14 3.14 -1 1 0.2 "s(x)-y"
$ ./bcview -3.14 3.14 -1 1 0.2 "c(x)-y"
$ ./bcview -3 3 -2 2 0.2 "s(x)/c(x)-y"
$ ./bcview -3 1 -1 2 0.2 "e(x)-y"
$ ./bcview -1 4 -2 2 0.2 "l(x)-y"
$ ./bcview -3 3 -2 2 0.21 "1/x-y"
$ ./bcview -4 4 -1 3 0.2 "sqrt(sqrt(x^2))-y"
$ ./bcview -4 4 -2 2 0.2 "l(sqrt(x^2))-y"
$ ./bcview -3 3 -2 2 0.2 "x-x^3/3-y"
$ ./bcview -4 4 -2 1 0.2 "1-x^2/2-y"
$ ./bcview -3 3 -3 3 0.3 "x^2+y^2-e(2)"
$ ./bcview -3 3 -3 3 0.3 "x^2/3+y^2/9-1"
$ ./bcview -3 5 -3 5 0.3 "((x-1)*c(1)-(y-1)*s(1))^2/3+((y-1)*c(1)+(x-1)*s
$ ./bcview -10 10 -5 5 0.5 "s(x*c(-0.5)-y*s(-0.5))-(y*c(-0.5)+x*s(-0.5))"
$ ./bcview -3 3 -1 1 0.11 "x/(1-4*x^2)-y"
$ ./bcview -3 3 -1 1 0.11 "x/(1-4*x^2)-y" 2
$ ./bcview -5 5 -5 5 0.15 "s(a(1)*4*x)*x-y" 5


 $ ./bcview -3 5 -3 5 0.3 "((x-1)*c(1)-(y-1)*s(1))^2/3+((y-1)*c(1)+(x-1)*s
 
Ne manca un pezzo ...  :-)
 
$ ./bcview -3 5 -3 5 0.3 "((x-1)*c(1)-(y-1)*s(1))^2/3+((y-1)*c(1)+(x-1)*s(1))^2/9-1"
 
 

(x-1)*s(1))^2/9-1"
 
Si', devo essermelo mangiato nel copia-incolla.
 
Comunque non e' semplice evitare la doppia (talvolta tripla)
linea del grafico, inoltre gli assi x,y (forse a causa dei
pixel?) non sono monometrici, la retta a 45 y=x -> $6="y-x" da me
la fa a circa 2 a 1 in verticale.
Per averla a 45 devo dare: $ bcview -2 2 -1 1 .1 2*y-x
 
e adesso la fa perfetta, anche se triplice; e purtroppo non mi
riesce di fargliene mettere una sola.
Forse bisognerebbe sostituire, nel sorgente di bc, x/2 a x cosi'
il non-allungamento verticale vale per tutte ciao!
