September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -1,12 +1,9 @@
|
|||
result = DetectDividebyZero(1, 0)
|
||||
|
||||
|
||||
Function DetectDividebyZero(a, b)
|
||||
On Error GoTo [Error]
|
||||
DetectDividebyZero= (a/ b)
|
||||
Exit Function
|
||||
[Error]
|
||||
If Err = 11 Then '11 is the error number raised when divide by zero occurs
|
||||
Notice "Divide by Zero Detected!"
|
||||
End If
|
||||
End Function
|
||||
100 WHEN EXCEPTION USE ERROR
|
||||
110 FOR I=5 TO-2 STEP-1
|
||||
120 PRINT 10/I
|
||||
130 NEXT
|
||||
140 END WHEN
|
||||
150 HANDLER ERROR
|
||||
160 IF EXTYPE=3001 THEN PRINT EXSTRING$(EXTYPE);" in line";EXLINE
|
||||
170 CONTINUE
|
||||
180 END HANDLER
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
10 ON ERROR GOTO 60
|
||||
20 PRINT 2/3
|
||||
30 PRINT 3/5
|
||||
40 PRINT 4/0
|
||||
50 END
|
||||
60 IF ERR=11 THEN PRINT "Division by zero in line"ERL:RESUME 50
|
||||
result = DetectDividebyZero(1, 0)
|
||||
|
||||
|
||||
Function DetectDividebyZero(a, b)
|
||||
On Error GoTo [Error]
|
||||
DetectDividebyZero= (a/ b)
|
||||
Exit Function
|
||||
[Error]
|
||||
If Err = 11 Then '11 is the error number raised when divide by zero occurs
|
||||
Notice "Divide by Zero Detected!"
|
||||
End If
|
||||
End Function
|
||||
|
|
|
|||
|
|
@ -1,13 +1,6 @@
|
|||
;Set up a Procedure to handle any Error
|
||||
Procedure MyErrorHandler()
|
||||
Define txt$="The following error happened."+#CRLF$+ ErrorMessage()+"at line "+Str(ErrorLine())
|
||||
MessageRequester("OnError test", txt$)
|
||||
EndProcedure
|
||||
|
||||
; Tell where to go if an Error happens
|
||||
OnErrorCall(@MyErrorHandler())
|
||||
|
||||
;Now, do something very stupid so that we may see an Error...
|
||||
Repeat
|
||||
A=Random(100)/Random(100)
|
||||
ForEver
|
||||
10 ON ERROR GOTO 60
|
||||
20 PRINT 2/3
|
||||
30 PRINT 3/5
|
||||
40 PRINT 4/0
|
||||
50 END
|
||||
60 IF ERR=11 THEN PRINT "Division by zero in line"ERL:RESUME 50
|
||||
|
|
|
|||
|
|
@ -1,2 +1,13 @@
|
|||
Define.d a, b
|
||||
Debug a/b
|
||||
;Set up a Procedure to handle any Error
|
||||
Procedure MyErrorHandler()
|
||||
Define txt$="The following error happened."+#CRLF$+ ErrorMessage()+"at line "+Str(ErrorLine())
|
||||
MessageRequester("OnError test", txt$)
|
||||
EndProcedure
|
||||
|
||||
; Tell where to go if an Error happens
|
||||
OnErrorCall(@MyErrorHandler())
|
||||
|
||||
;Now, do something very stupid so that we may see an Error...
|
||||
Repeat
|
||||
A=Random(100)/Random(100)
|
||||
ForEver
|
||||
|
|
|
|||
|
|
@ -1,7 +1,2 @@
|
|||
on error goto [error]
|
||||
a = 1 / 0
|
||||
wait
|
||||
|
||||
[error] ' error 11 is division by zero err number
|
||||
If err = 11 Then print "Division by Zero"
|
||||
wait
|
||||
Define.d a, b
|
||||
Debug a/b
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
on error goto [error]
|
||||
a = 1 / 0
|
||||
wait
|
||||
|
||||
[error] ' error 11 is division by zero err number
|
||||
If err = 11 Then print "Division by Zero"
|
||||
wait
|
||||
17
Task/Detect-division-by-zero/Ol/detect-division-by-zero.ol
Normal file
17
Task/Detect-division-by-zero/Ol/detect-division-by-zero.ol
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
(define (safediv a b)
|
||||
(if (eq? (type b) type-complex)
|
||||
(/ a b) ; complex can't be 0
|
||||
(let ((z (/ 1 (inexact b))))
|
||||
(unless (or (equal? z +inf.0) (equal? z -inf.0))
|
||||
(/ a b)))))
|
||||
|
||||
; testing:
|
||||
(for-each (lambda (x)
|
||||
(if x (print x) (print "division by zero detected")))
|
||||
(list
|
||||
(safediv 1 5) ; => 1/5
|
||||
(safediv 2 0) ; => division by zero detected
|
||||
(safediv 3 1+2i) ; => 3/5-6/5i
|
||||
(safediv 4 0+i) ; => 0-4i
|
||||
(safediv 5 7/5) ; => 25/7
|
||||
))
|
||||
|
|
@ -1,14 +1,12 @@
|
|||
sub div($a, $b){
|
||||
sub div($a, $b) {
|
||||
my $r;
|
||||
try {
|
||||
$r = $a / $b;
|
||||
CATCH {
|
||||
say "tried to divide by zero !" if $! ~~ "Divide by zero";
|
||||
default { note "Unexpected exception, $_" }
|
||||
}
|
||||
}
|
||||
return $r // fail;
|
||||
return $r // Nil;
|
||||
}
|
||||
|
||||
say div(10,2); # 5
|
||||
say div(1,0); # Inf, 1/0 constants are substituted for Infinity
|
||||
say div(1, sin(0)); # undef, and prints "tried to divide by zero"
|
||||
say div(10,2);
|
||||
say div(1, sin(0));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
multi div($a, $b){ return $a / $b }
|
||||
multi div($a, $b where { $b == 0 }){
|
||||
say 'lolicheatsyou';
|
||||
return 1;
|
||||
}
|
||||
multi div($a, $b) { return $a / $b }
|
||||
multi div($a, $b where { $b == 0 }) { note 'Attempt to divide by zero.'; return Nil }
|
||||
|
||||
say div(1, sin(0)); # prints "lolicheatsyou" newline "1"
|
||||
say div(10, 2);
|
||||
say div(1, sin(0));
|
||||
|
|
|
|||
2
Task/Detect-division-by-zero/Q/detect-division-by-zero.q
Normal file
2
Task/Detect-division-by-zero/Q/detect-division-by-zero.q
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
r:x%0
|
||||
?[1=sum r=(0n;0w;-0w);"division by zero detected";()]
|
||||
|
|
@ -14,4 +14,10 @@ object DivideByZero extends Application {
|
|||
|
||||
println("divided by zero = " + check(1, 0))
|
||||
|
||||
def check1(x: Int, y: Int): Boolean = {
|
||||
import scala.util.Try
|
||||
Try(y/x).isFailure
|
||||
}
|
||||
println("divided by zero = " + check1(1, 0))
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue