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 | + |