How to Create a Speaking Calculator in Windows

We all use windows default calculator everyday. Some days before, I had written an article about some beautiful Calculator tricks for windows. But today I will tell you how to create a beautiful and interesting speaking calculator in 2 minutes. Although this article may not be very useful for your calculation purpose but still it provides a lot of learning. That is what our blog's goal is, "FunButLearn". 

What is this ?

This is nothing but a speaking calculator which will never show you the result on the screen, rather it will tell you the result just like a robot. So before doing this first verify your volume is not mute and your speaker is good.

How to do this?

There are two ways to do this. Lets see one by one.

1st way (You can enter only two operand)

Just copy and paste the following code in a notepad and save it in .vbs extension
Dim expr,sapi, mul, div, add,subtr, op1, op2, typ, pow, modu
on error resume next
Err.Clear
set sapi = CreateObject("sapi.spvoice")
expr=InputBox("Write an expression to calculate: "+vbcrlf+vbcrlf+"Note: Please enter only two operands."+vbcrlf+vbcrlf+"Example: 5+7","Speaking Calculator")
mul=split(expr,"*")
div=split(expr,"/")
add=split(expr,"+")
subtr=split(expr,"-")
pow=split(expr,"^")
modu=split(expr,"mod")

if(ubound(mul)=1)then
  typ="mul"
  op1=mul(0)
  op2=mul(1)
else
   if(ubound(div)=1)then
     typ="div"
     op1=div(0)
     op2=div(1)
   else
        if(ubound(add)=1)then
          typ="add"
          op1=add(0)
          op2=add(1)
        else
             if(ubound(subtr)=1)then
                typ="subtr" 
                op1=subtr(0)
                op2=subtr(1)
             else
                 if(ubound(pow)=1)then
                    typ="pow" 
                    op1=pow(0)
                    op2=pow(1)
                 else
                    if(ubound(modu)=1)then
                       typ="mod" 
                       op1=modu(0)
                       op2=modu(1)
                    end if
                 end if  
             end if
        end if
   end if
end if

if(typ="" or not isnumeric(op1) or not isNumeric(op2))then
   msgbox "The expression you entered seems to be invalid",vbokonly,"Invalid Expression"
else
   select case typ
     case "mul": sapi.Speak replace(expr,"*",": multiplied by ")+": is equal to "+ cStr(Eval(expr))
     case "div": sapi.Speak replace(expr,"/",": divided by ")+": is equal to "+ cStr(Eval(expr))
     case "add": sapi.Speak replace(expr,"+",": plus ")+": is equal to "+ cStr(Eval(expr))
     case "subtr": sapi.Speak replace(expr,"-",": minus ")+": is equal to "+ cStr(Eval(expr))
     case "pow": sapi.Speak replace(expr,"^",": powered by ")+": is equal to "+ cStr(Eval(expr))
     case "mod": sapi.Speak replace(expr,"mod",": modulo ")+": is equal to "+ cStr(Eval(expr))
   end select
end if
if  Err.Number <> 0  then 
msgbox "Description: "+Err.Description,vbokonly,"Error"
end if
 I will suggest you to save it as SpeakingClock1.vbs and double click to open the file

2nd way (You can enter any expression)

Just copy and paste the following code in a notepad and save it in .vbs extension
Dim expr,sapi
on error resume next
Err.Clear
set sapi = CreateObject("sapi.spvoice")
expr=InputBox("Write an expression to calculate: "+vbcrlf+vbcrlf+"Example: (6-3*4)*2+3","Speaking Calculator")
sapi.speak "The answer is:  "+ cStr(Eval(expr))
if  Err.Number <> 0  then 
msgbox "Description: "+Err.Description,vbokonly,"Error"
end if
 I will suggest you to save it as SpeakingClock2.vbs and double click to open the file

Note: In both of these calculators you can calculate expressions with 4 operators. The operators are Addition(+), Subtraction(-), Multiplication(*), Division(/), Power(^) and Modulo(mod)