/* ------------------------- Program name "zValue.java" h.8.8.10.-h.8.8.12 by Yoshikazu oonishi h10.10.9 updata by nken ------------------------- */ public class zValue{ int ichi,Err; double atai,suu,su1,su2; char op,op2; char xx; char yy; double a[]; public zValue() { a=new double[26]; for(int i=0; i<26; i++) a[i]=0; op='@'; ichi=1; atai=0; xx='x'; yy='y'; } public int getErr() { return Err; } public void setHensuu(char c) { xx=c; } // public void setTeisuu(char c, double r) { int i; i=c-'a'; if(i>=0 && i<26) a[i]=r; } public double getTeisuu(char c) { int i; i=c-'a'; if(i>=0 && i<26) return(a[i]); else return(0); } public double kansuu(String fn, double x) throws Exception { int i; char c; double r=0; String f; f="t:Tan s:Sin c:Cos l:Log e:Exp r:Sqr a:Abs i:Int"; i=f.indexOf(fn); if(i<0) c=' '; else c=f.charAt(i-2); switch(c) { case 't': r=Math.tan(x); break; case 's': r=Math.sin(x); break; case 'c': r=Math.cos(x); break; case 'l': r=Math.log(x); break; case 'e': r=Math.exp(x); break; case 'r': r=Math.sqrt(x); break; case 'a': r=Math.abs(x); break; case 'i': r=Math.floor(x); break; default: Err=2; r=0; break; } return(r); } public void endsyori1() throws Exception { int i; double r; switch(op) { case '@': su1=suu; break; case '+': case '-': if(ichi==1) atai+=su1; else { if(op2=='*') atai+=(su1*su2); else atai+=(su1/su2); } if(op=='+') su1=suu; else su1=-suu; ichi=1; break; case '^': if(ichi==1) su1=Math.pow(su1,suu); else su2=Math.pow(su2,suu); break; case '*': case '/': if(ichi==2) { if(op2=='*') su1*=su2; else su1/=su2; } ichi=2; su2=suu; op2=op; break; default: Err=2; break; } } public void endsyori2() throws Exception { switch(op) { case '@': atai=suu; break; case '+': case '-': case '^': if(ichi==1) atai+=su1; else { if(op2=='*') atai+=(su1*su2); else atai+=(su1/su2); } break; case '*': case '/': if(op=='*') atai+=(su1*su2); else atai+=(su1/su2); break; default: Err=2; break; } } public double Value(String ss,double x,double y) { int i,j,len; char c,d; int deep; int bichi; double batai,bsu1,bsu2; char bop,bop2; String fn; String s; Err=0; s=delspace(ss); len=s.length(); op='@'; ichi=1; atai=0; su1=0; su2=0; try { for (i=0; i='0' && c<='9') { j=i++; if(i='0') && (c<='9')) || (c=='.')) && (++i='a' && c<='z') { if(i>0) { d=s.charAt(i-1); if((d==')') || ((d>='0') && (d<='9'))) op='*'; } if(c==xx){suu=x;} else if(c==yy){suu=y;} else suu=getTeisuu(c); endsyori1(); } else if(c=='(') { if(i>0) { d=s.charAt(i-1); if((d==')') || ((d>='0') && (d<='9')) || ((d>='a') && (d<='z'))) op='*'; } j=i; deep=1; do { c=s.charAt(++i); if(c=='(') ++deep; else if(c==')') --deep; } while(((c!=')') || (deep!=0)) && (i='A' && c<='Z') { if(i>0) { d=s.charAt(i-1); if((d==')') || ((d>='0') && (d<='9')) || ((d>='a') && (d<='z'))) op='*'; } j=i++; if(i='a') && (c<='z')); if(i