Sa va fie de bine. :thleft: :thleft: .
#include
GUICreate("Calculator", 300, 255)
$nr=0
$NUMAR_SRC = GUICtrlCreateInput("0", 0, 0, 500, 20,$ES_READONLY)
$do='none'
$op_did=false
$punctx=0
$ABOUT=GUICtrlCreateButton("ABOUT", 225, 225, 70)
$0=GUICtrlCreateButton("&0", 30, 100, 25)
$1=GUICtrlCreateButton("&1", 5, 75, 25)
$2=GUICtrlCreateButton("&2", 30, 75, 25)
$3=GUICtrlCreateButton("&3", 55, 75, 25)
$4=GUICtrlCreateButton("&4", 5, 50, 25)
$5=GUICtrlCreateButton("&5", 30, 50, 25)
$6=GUICtrlCreateButton("&6", 55, 50, 25)
$7=GUICtrlCreateButton("&7", 5, 25, 25)
$8=GUICtrlCreateButton("&8", 30, 25, 25)
$9=GUICtrlCreateButton("&9", 55, 25, 25)
$ORI=GUICtrlCreateButton("&*", 105, 25, 25)
$IMPARTIT=GUICtrlCreateButton("&/", 105, 50, 25)
$PLUS=GUICtrlCreateButton("&+", 105, 75, 25)
$MINUS=GUICtrlCreateButton("&-", 105, 100, 25)
$EGAL=GUICtrlCreateButton("&=", 105, 125, 25)
$PUNCT=GUICtrlCreateButton("&.", 105, 150, 25)
$PLMIN=GUICtrlCreateButton("+ -", 80, 150, 25)
$PI=GUICtrlCreateButton("pi", 55, 150, 25)
$FI=GUICtrlCreateButton("fi", 30, 150, 25)
$E=GUICtrlCreateButton("e", 5, 150, 25)
$SIN=GUICtrlCreateButton("sin", 190, 25, 30)
$COS=GUICtrlCreateButton("cos", 190, 50, 30)
$TAN=GUICtrlCreateButton("tan", 190, 75, 30)
$CTAN=GUICtrlCreateButton("ctan", 190, 100, 30)
$ASIN=GUICtrlCreateButton("arcsin", 140, 25, 50)
$ACOS=GUICtrlCreateButton("arccos", 140, 50, 50)
$ATAN=GUICtrlCreateButton("arctan", 140, 75, 50)
$ACTAN=GUICtrlCreateButton("arcctan", 140, 100, 50)
$X2=GUICtrlCreateButton("x^2", 230, 25, 30)
$X3=GUICtrlCreateButton("x^3", 230, 50, 30)
$XY=GUICtrlCreateButton("x^y", 230, 75, 30)
$XF=GUICtrlCreateButton("x!", 230, 100, 30)
$1X=GUICtrlCreateButton("1/x", 230, 125, 30)
$SQRT2=GUICtrlCreateButton("sqrt 2", 260, 25, 35)
$SQRT3=GUICtrlCreateButton("sqrt 3", 260, 50, 35)
$SQRTY=GUICtrlCreateButton("sqrt y", 260, 75, 35)
$LN=GUICtrlCreateButton("ln", 260, 100, 35)
$LG=GUICtrlCreateButton("lg", 260, 125, 35)
$LO=GUICtrlCreateButton("log y", 260, 150, 35)
$CC=GUICtrlCreateButton("C", 5, 225, 25)
$CE=GUICtrlCreateButton("CE", 30, 225, 25)
$EXIT=GUICtrlCreateButton("EXIT", 155, 225, 70)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $0
add('0')
Case $msg = $1
add('1')
Case $msg = $2
add('2')
Case $msg = $3
add('3')
Case $msg = $4
add('4')
Case $msg = $5
add('5')
Case $msg = $6
add('6')
Case $msg = $7
add('7')
Case $msg = $8
add('8')
Case $msg = $9
add('9')
Case $msg = $PUNCT
if $punctx=0 AND $op_did=false Then
GUICtrlSetData($NUMAR_SRC,GUICtrlRead($NUMAR_SRC) & '.')
$punctx=1
EndIf
Case $msg = $PLUS
rezolve()
$do='plus'
Case $msg = $MINUS
rezolve()
$do='minus'
Case $msg = $ORI
rezolve()
$do='ori'
Case $msg = $IMPARTIT
rezolve()
$do='impartit'
Case $msg = $X2
rezolve()
$do='x^2'
rezolve()
Case $msg = $X3
rezolve()
$do='x^3'
rezolve()
Case $msg = $XY
rezolve()
$do='x^y'
Case $msg = $XF
rezolve()
$do='xf'
rezolve()
Case $msg = $1X
rezolve()
$do='1x'
rezolve()
Case $msg = $SQRT2
rezolve()
$do='sqrt2'
rezolve()
Case $msg = $SQRT3
rezolve()
$do='sqrt3'
rezolve()
Case $msg = $SQRTY
rezolve()
$do='sqrty'
Case $msg = $LN
rezolve()
$do='ln'
rezolve()
Case $msg = $SIN
rezolve()
$do='sin'
rezolve()
Case $msg = $COS
rezolve()
$do='cos'
rezolve()
Case $msg = $TAN
rezolve()
$do='tan'
rezolve()
Case $msg = $CTAN
rezolve()
$do='ctan'
rezolve()
Case $msg = $ASIN
rezolve()
$do='asin'
rezolve()
Case $msg = $ACOS
rezolve()
$do='acos'
rezolve()
Case $msg = $ATAN
rezolve()
$do='atan'
rezolve()
Case $msg = $ACTAN
rezolve()
$do='actan'
rezolve()
Case $msg = $LG
rezolve()
$do='lg'
rezolve()
Case $msg = $LO
rezolve()
$do='lo'
Case $msg = $PLMIN
GUICtrlSetData($NUMAR_SRC,GUICtrlRead($NUMAR_SRC)*(-1))
CASE $msg = $PI
GUICtrlSetData($NUMAR_SRC,3.14159265358979323846)
$op_did=true
CASE $msg = $FI
GUICtrlSetData($NUMAR_SRC,1.61803988749894848204)
$op_did=true
CASE $msg = $E
GUICtrlSetData($NUMAR_SRC,2.71828182845904523536)
$op_did=true
Case $msg = $CE
GUICtrlSetData($NUMAR_SRC,'0')
$punctx=0
Case $msg = $CC
GUICtrlSetData($NUMAR_SRC,'0')
$do='none'
$op_did=false
$punctx=0
Case $msg = $EGAL
rezolve()
Case $msg = $ABOUT
MsgBox(0,"ABOUT BOX","MADE BY TE4L : te4l@hotmail.com")
Case $msg = $EXIT
ExitLoop
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
if GUICtrlRead($NUMAR_SRC) ='1.#INF' OR GUICtrlRead($NUMAR_SRC) ='-1.#INF' Then
GUICtrlSetData($NUMAR_SRC, 'ERROR #2: INFINITY')
EndIf
GUICtrlSetData($NUMAR_SRC, GUICtrlRead($NUMAR_SRC)+0)
WEnd
func rezolve()
global $nr,$do
$pi = 3.14159265358979
Select
Case $do='none'
$nr=GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='plus'
$nr=$nr+GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='minus'
$nr=$nr-GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='ori'
$nr=$nr*GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='impartit'
$nr=$nr/GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='x^2'
$nr=GUICtrlRead($NUMAR_SRC)*GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='x^3'
$nr=GUICtrlRead($NUMAR_SRC)*GUICtrlRead($NUMAR_SRC)*GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='x^y'
$nr=$nr^GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='xf'
$nr=fact(GUICtrlRead($NUMAR_SRC))
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='1x'
$nr=1/GUICtrlRead($NUMAR_SRC)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='sqrt2'
$nr=GUICtrlRead($NUMAR_SRC)^(1/2)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='sqrt3'
$nr=GUICtrlRead($NUMAR_SRC)^(1/3)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='sqrty'
$nr=$nr^(1/GUICtrlRead($NUMAR_SRC))
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='ln'
$nr=LogX(GUICtrlRead($NUMAR_SRC),2.71828182845904523536)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='lg'
$nr=LogX(GUICtrlRead($NUMAR_SRC),10)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='lo'
$nr=LogX($nr,GUICtrlRead($NUMAR_SRC))
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='sin'
GUICtrlSetData($NUMAR_SRC,_sin(GUICtrlRead($NUMAR_SRC)))
Case $do='cos'
GUICtrlSetData($NUMAR_SRC,(1-_sin(GUICtrlRead($NUMAR_SRC))^2)^(1/2))
Case $do='tan'
GUICtrlSetData($NUMAR_SRC,_sin(GUICtrlRead($NUMAR_SRC))/_cos(GUICtrlRead($NUMAR_SRC)))
Case $do='ctan'
GUICtrlSetData($NUMAR_SRC,_cos(GUICtrlRead($NUMAR_SRC))/_sin(GUICtrlRead($NUMAR_SRC)))
Case $do='asin'
$nr=asin(GUICtrlRead($NUMAR_SRC)) * (180 / $pi)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='acos'
$nr=acos(GUICtrlRead($NUMAR_SRC)) * (180 / $pi)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='atan'
$nr=atan(GUICtrlRead($NUMAR_SRC)) * (180 / $pi)
GUICtrlSetData($NUMAR_SRC,$nr)
Case $do='actan'
$nr=atan((1/GUICtrlRead($NUMAR_SRC))) * (180 / $pi)
GUICtrlSetData($NUMAR_SRC,$nr)
EndSelect
$punctx=0
$do='none'
$op_did=true
EndFunc
func add($what)
global $op_did,$NUMAR_SRC
if $op_did=true Then
$buf='0'
$op_did=false
else
$buf=GUICtrlRead($NUMAR_SRC)
endif
If $buf <> '0' Then
if StringLen(GUICtrlRead($NUMAR_SRC)) < 21 Then
GUICtrlSetData($NUMAR_SRC,$buf & $what)
endif
Else
GUICtrlSetData($NUMAR_SRC, $what)
EndIf
EndFunc
func fact($nr)
if $nr>20 Then
return 'ERROR #1: The imput number is to big to calculate'
EndIf
$s=1
for $i=1 to $nr
$s=$s*$i
next
return $s
EndFunc
func LogX($x,$y)
Return Log($x) / Log($y)
EndFunc
func _sin($what)
$pi = 3.14159265358979
$degToRad = $pi / 180
$__sin=1
if $what>360 Then
$what=mod($what , 360)
EndIf
if $what>=0 and $what<=180 Then
$__sin=1
EndIf
if $what>180 and $what<360 Then
$__sin=-1
EndIf
if $what>90 Then
$what=abs($what-360)
endif
return Sin($what * $degToRad)*$__sin
EndFunc
func _cos($what)
$pi = 3.14159265358979
$degToRad = $pi / 180
$__sin=1
If $what>360 Then
$what=mod($what , 360)
EndIf
if $what>=0 and $what<=180 Then
$__sin=1
EndIf
If $what>180 and $what<360 Then
$__sin=-1
EndIf
If $what>90 Then
$what=abs($what-360)
endif
return Cos($what * $degToRad)*$__sin
EndFunc