Автор: gregoryaz
Дата сообщения: 16.11.2007 22:11
		Помогите, пожалуйста, кто может! 
 Вот скрипт калькулятора с записной книжкой - очень хороший получается калькулятор, можно записывать весь ход расчётов. 
 НО!!! В нём нельзя считать несколько действий подряд без промежуточного нажатия кнопки РАВНО!!! Т.е. если в обычном калькуляторе для вычисления 2+3+4+5= можно нажимать именно в таком порядке, и в итоге получится результат, то в этом скрипте такое не работает и нужно после каждого действия нажимать РАВНО!! Т.е. чтоб вышеприведённый пример сосчитать, в нём нужно нажимать 2+3=+4=+5=, что очень гемморойно, если много действий. 
 Можно ли это исправить, чтоб он работал в этой части по-человечески!! 
 Я уже ковырял его по-разному, но не получается. 
  
 [more]<html> 
 <head> 
 <meta http-equiv="Content-Language" content="ru"> 
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
 <title>Calculator46</title> 
 <script language="JavaScript"> 
 function round(val) 
 { 
     return(Math.round(val*10000000)/10000000); 
 } 
  
 PI = 3.141592654; 
 function pie() 
 { 
     document.keypad.display.value = PI; 
 } 
  
 function MakeArray(n){ 
     this.length=n; 
        for(var i=1; i<=n; i++) this[i]=0; 
    return this 
 } 
 link = new MakeArray(5); 
 function enter(num) 
 { 
     document.keypad.display.value += num; 
 } 
  
 function calculate(sign) 
 { 
     var temp = document.keypad.display.value * 1; 
     document.keypad.display.value = ""; 
     document.keypad.list.value = temp; 
     link[1] = temp; 
  
     if (sign == "/") {link[2] = "/"; document.keypad.list.value += " / ";} 
     if (sign == "*") {link[2] = "*"; document.keypad.list.value += " * ";} 
     if (sign == "-") {link[2] = "-"; document.keypad.list.value += " - ";} 
     if (sign == "+") {link[2] = "+"; document.keypad.list.value += " + ";} 
     if (sign == "p") {link[2] = "p"; document.keypad.list.value += " ^ ";} 
 } 
  
  
 function power() 
 { 
     temp = 1; 
     n = link[3]; 
        for(var i=1; i<=n; i++) temp *= link[1]; 
     return(temp); 
 } 
  
  
  
 function equal() 
  
 { 
  
     if (link[2]) { 
  
         if (document.keypad.display.value != "") { 
  
  
  
             var temp = document.keypad.display.value * 1; 
  
             document.keypad.list.value += temp; 
  
             link[3] = temp; 
  
  
  
             if (link[2] == "/") {res = link[1] / link[3]; document.keypad.display.value = round(res)} 
  
             if (link[2] == "*") {res = link[1] * link[3]; document.keypad.display.value = round(res)} 
  
             if (link[2] == "-") {res = link[1] - link[3]; document.keypad.display.value = round(res)} 
  
             if (link[2] == "+") {res = link[1] + link[3]; document.keypad.display.value = round(res)} 
  
             if (link[2] == "p") {document.keypad.display.value = round( power() )} 
  
  
  
             link[1]=0; link[2]=0; link[3]=0; 
  
         } 
  
     } 
  
 } 
  
  
  
 function calc(code) 
  
 { 
  
     var temp = document.keypad.display.value * 1; 
  
  
  
     if (code == 1) {temp1 = Math.sin(temp*PI/180); document.keypad.list.value = "sin "} 
  
     if (code == 2) {temp1 = Math.cos(temp*PI/180); document.keypad.list.value = "cos "} 
  
     if (code == 3) {temp1 = Math.tan(temp*PI/180); document.keypad.list.value = "tan "} 
  
     if (code == 4) {temp1 = Math.sqrt(temp); document.keypad.list.value = "sqrt "} 
  
     if (code == 5) {temp1 = Math.log(temp); document.keypad.list.value = "ln "} 
  
     if (code == 6) {temp1 = 1/temp; document.keypad.list.value = "1/x, x="} 
  
     if (code == 7) {temp1 = temp * temp; document.keypad.list.value = "x*x, x="} 
  
  
  
     document.keypad.list.value += temp; 
  
     document.keypad.display.value = round(temp1); 
  
 } 
  
  
  
 function fsolve() 
  
 { 
  
     var a = document.keypad.c1.value*1; 
  
     var b = document.keypad.c2.value*1; 
  
     var c = document.keypad.c3.value*1; 
  
  
  
     if (a==0) {document.keypad.list.value = "      НЕ КВАДРАТИЧНОЕ"; 
  
              document.keypad.display.value = "             УРАВНЕНИЕ"} 
  
     else { x1 = (b*b-4*a*c); 
  
         if ( x1 < 0) {document.keypad.list.value = "         Мнимые корни"; 
  
                   temp = (Math.sqrt(Math.abs(x1)))/(2*a); 
  
                   x2 = round(-b/(2*a)) + "+/- " + round(temp) + "i"; 
  
                   document.keypad.display.value = x2} 
  
         else { 
  
             var x1 = (-b + Math.sqrt(b*b-4*a*c)) / (2*a); 
  
             var x2 = (-b - Math.sqrt(b*b-4*a*c)) / (2*a); 
  
  
  
             document.keypad.list.value = "x1 = " + round(x1); 
  
             document.keypad.display.value = "x2 = " + round(x2); 
  
         } 
  
     } 
  
 } 
  
  
  
 function change() 
  
 { 
  
     var temp = document.keypad.display.value; 
  
  
  
     if (temp.substring(0,1) == "-") {document.keypad.list.value = ""; 
  
                            document.keypad.display.value = 0 - document.keypad.display.value * 1} 
  
     if (temp.substring(0,1) != "-") {document.keypad.list.value = ""; 
  
                            document.keypad.display.value = "-" + temp.substring(0,temp.length)} 
  
 } 
  
  
  
 function eraser() 
  
 { 
  
     document.keypad.list.value = " Начинайте считать!"; 
  
     document.keypad.display.value = ""; 
  
     document.keypad.c1.value = ""; 
  
     document.keypad.c2.value = ""; 
  
     document.keypad.c3.value = ""; 
  
     link[1]=0; link[2]=0; link[3]=0; 
  
 } 
  
  
  
 function backer() 
  
 { 
  
     var temp = document.keypad.display.value; 
  
     document.keypad.display.value = temp.substring(0,temp.length*1 -1); 
  
 } 
  
  
  
 var memory = 0; 
  
 function mem(val) 
  
 { 
  
     if (val == 1 ) {document.keypad.list.value = "          --> В память"; 
  
                 memory = document.keypad.display.value * 1} 
  
     if (val == -1) {document.keypad.display.value = memory} 
  
     if (val == 0 ) {document.keypad.list.value = "          Стереть ПАМЯТЬ"; 
  
                 document.keypad.display.value = ""; memory = 0} 
  
 } 
  
  
  
 function message() 
  
 { 
  
 alert('\n\nСвои вопросы направляйте автору:\n\n   ----> aag4@lehigh.edu <----'); 
  
 } 
  
  
  
 function travel(link) 
  
 { 
  
 window.open(link,"calculator","toolbar=1,location=1,status=1,scrollbars=1,directories=1,copyhistory=1,menubar=1,resizable=1") 
  
 } 
  
  
  
 var screen=" "; 
  
 function eraser2() 
  
 { 
  
     var ans = confirm('\nВы действительно хотите удалить содержимое записной книжки?\n'); 
  
     if (ans) {screen = document.notes.junk.value; document.notes.junk.value = "";} 
  
 } 
  
  
  
 function copy() 
  
 { 
  
 document.notes.junk.value = document.keypad.list.value+"\n"+document.keypad.display.value+"\n"+document.notes.junk.value; 
  
 } 
  
  
  
 function help() 
  
 { 
  
     screen = document.notes.junk.value; 
  
     msg1 = "Некоторые функции\nкалькулятора:\n"; 
  
     msg2 = "\n(<-> M) - Сброс памяти\n(--> M) - Прибавить к ПАМЯТИ\n(<-- M) - Вычесть из ПАМЯТИ"; 
  
     msg3 = "\n(<--)   - Стереть последнюю цифру\n(x^y)   - X в степени Y"; 
  
     msg4 = "\n\nЧтобы вернуться, нажмите 'Восстановить'"; 
  
     document.notes.junk.value = ""; 
  
     document.notes.junk.value = msg1 + msg2 + msg3 + msg4; 
  
 } 
  
  
  
 function restore() 
  
 { 
  
     document.notes.junk.value = ""; 
  
     document.notes.junk.value = screen;     
  
 } 
  
  
  
 </script> 
 </head> 
  
 <body bgcolor="#C0C0C0"> 
 <p align="center"> 
 <font size="3" color="#000000"><font color="#FF0000" size="5">Калькулятор 
 с записной книжкой</font><b><font size="4" color="#FF0000"><br> 
 </font>Удобен при различных расчетах с 
 необходимостью видеть (помнить) все 
 результаты.</b><BR> 
 <CENTER>(код скопируйте из источника)<table border=0 width="100%"><tr><td valign=middle align=center rowspan=2> 
  
 <form name="keypad"><CENTER><table border=6 cellspacing=2 cellpadding=3> 
  
  
  
 <tr><td valign=middle align=center colspan=9 bgcolor="yellow"> 
  
 <FONT SIZE=4 COLOR="#800040"><I><B>WEB</B></I></FONT> 
  
 <FONT SIZE=6 COLOR="#800040"><I><B>.Sci-CALCulator</B></I></FONT></td></tr> 
  
  
  
 <tr><td valign=middle align=center colspan=6><input type="text" name="list" size=22 value="   Начинайте считать!"> 
  
 </td><td valign=middle align=center colspan=3> 
  
 <input type="button" name="alex" value="       СБРОС      " onClick="eraser()"></td></tr> 
  
  
  
 <tr><td valign=middle align=center colspan=6><input type="text" name="display" size=22 value=""></td> 
  
 <td valign=middle align=center colspan=2> 
  
 <input type="button" name="alex" value="       =      " onClick="equal()"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  <--  " onClick="backer()"></td></tr> 
  
  
  
 <tr><td valign=middle align=center><input type="button" name="alex" value="  1  " onClick="enter(1)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  2  " onClick="enter(2)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  3  " onClick="enter(3)"></td> 
  
 <td></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="   /   " onClick="calculate('/')"></td> 
  
 <td></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value=" sin " onClick="calc(1)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value=" x½ " onClick="calc(4)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="<->M" onClick="mem(0)"></td></tr> 
  
  
  
 <tr><td valign=middle align=center><input type="button" name="alex" value="  4  " onClick="enter(4)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  5  " onClick="enter(5)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  6  " onClick="enter(6)"></td> 
  
 <td></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="   *   " onClick="calculate('*')"></td> 
  
 <td></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="cos" onClick="calc(2)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  x² " onClick="calc(7)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="--> M" onClick="mem(1)"></td></tr> 
  
  
  
 <tr><td valign=middle align=center><input type="button" name="alex" value="  7  " onClick="enter(7)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  8  " onClick="enter(8)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  9  " onClick="enter(9)"></td> 
  
 <td></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="   -   " onClick="calculate('-')"></td> 
  
 <td></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="tan " onClick="calc(3)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="1/x " onClick="calc(6)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="<-- M" onClick="mem(-1)"></td></tr> 
  
  
  
 <tr><td valign=middle align=center><input type="button" name="alex" value="  0  " onClick="enter(0)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="   .   " onClick="enter('.')"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value=" +|- " onClick="change()"></td> 
  
 <td></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  +   " onClick="calculate('+')"></td> 
  
 <td></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value="  pi " onClick="pie()"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value=" Ln " onClick="calc(5)"></td> 
  
 <td valign=middle align=center><input type="button" name="alex" value=" x^y  " onClick="calculate('p')"></td></tr> 
  
  
  
 <tr><td valign=middle align=center colspan=9>Квадратичное 
     уровнение</td></tr><tr><td valign=middle align=center colspan=9> 
  
 <B><input type="text" name="c1" size=4 value=""> *X² +  
  
 <input type="text" name="c2" size=4 value=""> *X +  
  
 <input type="text" name="c3" size=4 value=""> = 0  <input type="button" name="alex" value="Решить" onClick="fsolve()"></B> 
  
 </td></tr> 
  
 </table></CENTER></form> 
  
  
  
 </td><td valign=middle align=center> 
  
 </font> 
     <font size="6" color="#800040"><i><b>Записная Книжка</b></i></font> 
 <font size="3" color="#000000"> 
     </font> 
     </td></tr> 
  
 <tr><td valign=middle align=center> 
  
 <form name="notes"><TEXTAREA NAME="junk" ROWS=10 COLS=40 WRAP=virtual></TEXTAREA><BR><input type="button" name="alex" value="Поместить в записную книжку" onClick="copy()"><BR> 
  
 <input type="button" name="alex" style="width:190" value="Очистить записную книжку" onClick="eraser2()">      
   <input type="button" name="alex" style="width:110" value="Восстановить!" onClick="restore()"><BR><input type="button" name="alex" value="Помощь" onClick="help()">      
   <input type="button" name="alex" value="Еще помощь?" onClick="message()"><BR> 
  
      
  
  
  
 </td></tr></form></table></CENTER> 
 </body> 
 </html>[/more]