@@ -73,32 +73,42 @@ btns.forEach((btn) => {
7373 canUserAddDot ( ) ;
7474 }
7575
76- // This is the = fuction
76+
7777 if ( buttonValue === "=" ) {
7878 try {
7979 const replacedArray = data . map ( ( item ) => ( item === "x" ? "*" : item === "÷" ? "/" : item ) ) ;
80- let result = eval ( replacedArray . join ( "" ) ) ;
81- console . log ( eval ( replacedArray . join ( "" ) ) ) ;
82- displayResult ( replacedArray , result ) ;
83- zeroDivedByZero ( screen , result )
84- divideByZero ( screen , result ) ;
85- data = [ ] ;
86- data . push ( result )
80+ // Check if the expression involves 0/0
81+ if ( hasZeroDividedByZero ( replacedArray ) ) {
82+ screen . innerText = "Invalid format used. You cannot divide by zero" ;
83+ } else {
84+ let result = eval ( replacedArray . join ( "" ) ) ;
85+ console . log ( result ) ;
86+ displayResult ( replacedArray , result ) ;
87+ divideByZero ( screen , result ) ;
88+ data = [ ] ;
89+ data . push ( result ) ;
90+ }
8791 } catch ( e ) {
8892 screen . innerText = `${ e . name } press AC` ;
8993 }
9094 }
95+
9196
9297 function divideByZero ( display , outcome ) {
9398 outcome === Infinity
9499 ? ( display . innerText = "Math Error. Cannot divide by zero" )
95100 : ( display . innerText = outcome ) ;
96101 }
97- function zeroDivedByZero ( display , outcome ) {
98- Number . isNaN ( outcome )
99- ? ( display . innerText = "0÷0 is an nvalid format press AC" )
100- : ( display . innerText = outcome )
102+
103+ function hasZeroDividedByZero ( array ) {
104+ for ( let i = 0 ; i < array . length - 2 ; i ++ ) {
105+ if ( array [ i ] === "0" && array [ i + 1 ] === "/" && array [ i + 2 ] === "0" ) {
106+ return true ;
107+ }
108+ }
109+ return false ;
101110 }
111+
102112 function displayResult ( array , outcome ) {
103113 array = [ ] ;
104114 array . push ( outcome ) ;
0 commit comments