|
|
|
|
|
"+","-","*","/" - задают вид арифметичесой операции над операндами "." - ставит десятичную дробную точку "С" - сбрасывает калькулятор в начальное положение "-/+" - меняет знак операнда на противоположый "=" - вычисляет небходимую операцию "ч/вр" - задает единицу измерения операндов. (числа или время) У калькулятора имеется три окна для ввода операнда. Если выбраный тип число, то ввод операнда осуществляется в главное большое окно, ввод в другие окна игнорирутся. Однако есть особенность при вводе временных операндов. Если выбраный тип время, то операнд должен быть введен так, в основном окне часы, а двух остальных минуты и секунды соответсвенно. Однако, если осуществлен ввод только в основное окно, а остальные два пусты, то это будет интерпритроваться как ввод значения операнда в сукендах. В остальном работа калькулятора аналогична работе обычным его аналогам. Надеюсь он Вам хоть когда-нибудь понадобиться. Приятных Вам вычислений! |
|
|
var op1=0,op2=0; // операнды
var WhoActive=0; // указывает номер активного окна
var BePoint=0; // указывает была ли введена точка в нулевом окне
var Unit=0; // 0 - единица измерения числа
// 1 - единица измерения время
var Number=0; // указывает были ли введены какиенить цифры
var BeNul=0; // указывает был ли ноль
var Act=0; // указывает какую опрерацию выполнять {+,-,/,*}
var NewAct; // временная переменная
var Error=0; // указывает на ошибку при вводе операнда
var Error1=0;
var Error2=0;
var BeAct=0; // указывает была ли новая операция 0 - была
// 1 - не была
var BeAction=1; //
function CheckBOX()
{
calc.dig.click();
if (calc.dig.checked==true)
{
calc.inform.value="ед. измерения-числа";
Unit=0;
}
else
{
calc.inform.value="ед. измерения-время";
Unit=1;
}
ClearAll();
}
function Clr()
{
ClearAll();
Act=0;
Error=0;
BeAct=0;
BeAction=1;
op1=0;
op2=0;
}
function ClearAll()
{
calc.time[0].value='';
calc.time[1].value='';
calc.time[2].value='';
WhoActive=0;
Init();
}
function Sign()
{
var per;
if (calc.time[0].value!="")
{
if (calc.time[0].value<0)
per=calc.time[0].value*(-1);
else
per="-"+calc.time[0].value;
calc.time[0].value=per;
}
if (BeAction==0)
op1=op1*(-1);
}
function Init()
{
BePoint=0;
Number=0;
BeNul=0;
}
function Active(val)
{
WhoActive=val;
if (Unit==1)
{
calc.time(WhoActive).value="";
Init();
}
}
function GetDig(val)
{
BeAction=1;
if (BeAct==1)
{
ClearAll();
BeAct=0;
}
if (Unit==1)
{
if ((BeNul==0) && (Number==0) && (val==0))
{
calc.time[WhoActive].value=val;
BeNul=1;
}
if ((val<10) && (val>0) && (Number==0))
{
calc.time[WhoActive].value="";
Number=1;
}
if ((val<10) && (Number==1))
calc.time[WhoActive].value+=val;
}
else
{
if ((BeNul==0) && (Number==0) && (val==0))
{
calc.time[0].value=val;
BeNul=1;
}
if ((val<10) && (val>0) && (Number==0))
{
calc.time[0].value="";
Number=1;
}
if ((val<10) && (Number==1))
calc.time[0].value+=val;
if (val==11)
if (Number==0)
{
calc.time[0].value="0.";
Number=1;
BePoint=1;
}
else
if (BePoint==0)
{
BePoint=1;
calc.time[0].value+=".";
}
}
}
function Action(val)
{
var x=0,y=0,z=0;
NewAct=val;
BeAct=1;
Test();
if (BeAction==0)
{
Act=val;
return;
}
if (Error==1)
{
calc.inform.value="Борода в операнде";
return;
}
if (((Error1==1)&&(Error2==0)) || ((Error1==0)&&(Error2==1)))
{
calc.inform.value="Борода во вр. операнде";
return;
}
if (Unit==1)
{
if (Error1==1)
op2=parseFloat(calc.time[0].value);
else
if ((calc.time[1].value<60) && (calc.time[2].value<60))
op2=3600*parseFloat(calc.time[0].value)+60*parseFloat(calc.time[1].value)+parseFloat(calc.time[2].value);
else
{
calc.inform.value="Борода во вр. операнде";
return;
}
}
else
op2=parseFloat(calc.time[0].value);
if (Act==1) // сложение
op2=op1+op2;
if (Act==2) // вычитание
op2=op1-op2;
if (Act==4) // умножение
op2=op1*op2;
if (Act==3) // деление
op2=op1/op2;
if (Act!=0)
if (Unit==1)
{
if ((op2/3600-Math.ceil(op2/3600)-1)==-1)
x=op2/3600;
else
x=Math.ceil(op2/3600)-1;
calc.time[0].value=x;
if (((op2-(x*3600))/60-Math.ceil((op2-(x*3600))/60)-1)==-1)
y=(op2-(x*3600))/60;
else
y=Math.ceil((op2-(x*3600))/60)-1;
calc.time[1].value=y;
z=op2-(x*3600)-(y*60);
calc.time[2].value=Math.ceil(z);
}
else
calc.time[0].value=op2;
op1=op2;
Act=NewAct;
BeAction=0;
}
function Test()
{
Error=0;
Error1=0;
Error2=0;
if (calc.time[0].value=="")
Error=1;
if (calc.time[1].value=="")
if (Unit==1)
Error1=1;
if (calc.time[2].value=="")
if (Unit==1)
Error2=1;
}
|
|
|