:: Калькулятор, работающий с часами, минутами и секундами ::
ч/вр
:: Краткая инструкция по пользованию калькулятором ::
[Описание кнопок]
"0" - "9" - небходимы для ввода цифр текущего операнда
"+","-","*","/" - задают вид арифметичесой операции над операндами
"." - ставит десятичную дробную точку
"С" - сбрасывает калькулятор в начальное положение
"-/+" - меняет знак операнда на противоположый
"=" - вычисляет небходимую операцию
"ч/вр" - задает единицу измерения операндов. (числа или время)
[Принцип работы]

У калькулятора имеется три окна для ввода операнда. Если выбраный тип число, то ввод операнда осуществляется в главное большое окно, ввод в другие окна игнорирутся. Однако есть особенность при вводе временных операндов. Если выбраный тип время, то операнд должен быть введен так, в основном окне часы, а двух остальных минуты и секунды соответсвенно. Однако, если осуществлен ввод только в основное окно, а остальные два пусты, то это будет интерпритроваться как ввод значения операнда в сукендах. В остальном работа калькулятора аналогична работе обычным его аналогам.
Надеюсь он Вам хоть когда-нибудь понадобиться. Приятных Вам вычислений!

:: Назад нa главную ::
:: Исходный код ::
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;
}

	


:: Назад нa главную ::
Copуright (c) Alexey Zagirniy



Rambler's Top100