View difference between Paste ID: mKJgvdAp and h61E3gE1
SHOW: | | - or go back to the newest paste.
1
#!/usr/bin/gcl -f
2
3
(defun read-int (text)
4
	(format t text)
5
	(read)
6
)
7
8
(defun print-result ( a b c x)
9
	(let
10
		(
11-
			(bSign "+")
11+
			(bSign (if (< b 0) "" "+"))
12-
			(cSign "+")
12+
			(cSign (if (< c 0) "" "+"))
13
		)
14-
		(if (< b 0) (setf bSign "") ())
14+
15-
		(if (< c 0) (setf cSign "") ())
15+
16
			a 
17
			bSign b 
18
			cSign c 
19
			x
20
		)
21
	)
22
)
23
24
(defun calc-double-x (a b d)
25
	(list 
26
		( / (+ b (sqrt d)) (* 2 a))
27
		( / (- b (sqrt d)) (* 2 a))
28
	)
29
)
30
31
(defun calc-single-x (a b)
32
	(list 
33
		(/ (- b) (* 2 a))
34
	)
35
)
36
37
(defun calc-x (a b c)
38
	(let
39
		(
40
			(d (- (* b b) (* 4 a c))) 
41
			(x 0)
42-
			(d 0) 
42+
43
		(if (> d 0) 
44
			(calc-double-x a b d)
45-
		(setf d (- (* b b) (* 4 a c)))
45+
46
				(calc-single-x a b)
47
				nil
48
			)
49
		)
50
	)
51
)
52
53
(defun square ()
54
	(format t "a*x^2 + b*x + c = 0~%")
55
	
56
	(let 
57
		(
58
			(a (read-int "a=")) 
59
			(b (read-int "b=")) 
60
			(c (read-int "c="))
61-
			(a 0) 
61+
62-
			(b 0) 
62+
63-
			(c 0)
63+
64
)
65
66-
		(setf a (read-int "a="))
66+
67-
		(setf b (read-int "b="))
67+
68-
		(setf c (read-int "c="))
68+