mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-09 15:10:18 +00:00
These tests use a variety of sample code (with some of the larger files removed, so they are not complete!) and verifies that they all compile successfully.
103 lines
No EOL
2.3 KiB
QBasic
103 lines
No EOL
2.3 KiB
QBasic
'Program (c) T.A.Giles - Mar 2001
|
|
'Right Angle Triangle Solver v 1.1
|
|
'640 x 480 graphics resolution
|
|
SCREEN 12
|
|
start:
|
|
CLS
|
|
'degrees - radians conversion ratios
|
|
LET dr = .0174532925199#
|
|
LET rd = 57.2957795131#
|
|
LOCATE 1, 34
|
|
COLOR 7
|
|
PRINT "Right Angle Triangle Solver v 1.1 (c) T.A.Giles"
|
|
'Draw Triangle
|
|
LINE (50, 400)-(400, 400), 2 'Side A
|
|
LINE (400, 400)-(400, 150), 2 'Side B
|
|
LINE (400, 150)-(50, 400), 2 'Side C
|
|
LINE (360, 400)-(360, 360), 2 'Vert box
|
|
LINE (360, 360)-(400, 360), 2 'Hori box
|
|
'Print Side and Angle labels
|
|
COLOR 3
|
|
LOCATE 27, 27
|
|
PRINT "Side A"
|
|
LOCATE 18, 53
|
|
PRINT "Side B"
|
|
LOCATE 16, 23
|
|
PRINT "Side C"
|
|
LOCATE 24, 15
|
|
COLOR 14
|
|
PRINT "Angle b"
|
|
LOCATE 14, 43
|
|
PRINT "Angle a"
|
|
COLOR 15
|
|
lab0:
|
|
'Re-set print position for output
|
|
LOCATE 1, 1
|
|
LET f = 0' Binary flag
|
|
'Input data routine
|
|
PRINT "Enter '0' if unknown"
|
|
INPUT "Side A "; a
|
|
INPUT "Side B "; b
|
|
INPUT "Side C "; c
|
|
INPUT "Angle a (deg)"; x
|
|
INPUT "Angle b (deg)"; y
|
|
'Error trapping routine
|
|
IF a < 0 OR b < 0 OR c < 0 OR x < 0 OR y < 0 THEN GOTO err1
|
|
IF x >= 90 OR y >= 90 OR x + y > 90 THEN GOTO err1
|
|
IF a >= c AND c > 0 OR b >= c AND c > 0 THEN GOTO err1
|
|
IF a > 0 AND b > 0 AND c > 0 AND NOT c = SQR(a ^ 2 + b ^ 2) THEN GOTO err1
|
|
IF NOT x = 0 THEN LET y = 90 - x
|
|
'Degrees to Radians conversion
|
|
LET x = x * dr
|
|
LET y = y * dr
|
|
'Binary flag routine
|
|
IF a = 0 THEN LET f = f + 1
|
|
IF b = 0 THEN LET f = f + 2
|
|
IF c = 0 THEN LET f = f + 4
|
|
IF y = 0 THEN LET f = f + 8
|
|
IF f = 1 OR f = 3 THEN GOTO lab1
|
|
IF f = 2 OR f = 6 THEN GOTO lab2
|
|
IF f = 4 OR f = 5 THEN GOTO lab3
|
|
IF f = 8 OR f = 9 THEN GOTO lab4
|
|
IF f = 10 THEN GOTO lab5
|
|
IF f = 12 THEN GOTO lab6
|
|
err1:
|
|
SOUND 750, 1
|
|
GOTO lab0
|
|
lab1:
|
|
LET a = c * COS(y)
|
|
LET b = c * SIN(y)
|
|
LET c = a / COS(y)
|
|
GOTO lab9
|
|
lab2:
|
|
LET b = a * TAN(y)
|
|
LET c = a / COS(y)
|
|
GOTO lab9
|
|
lab3:
|
|
LET a = b / TAN(y)
|
|
LET c = a / COS(y)
|
|
GOTO lab9
|
|
lab4:
|
|
LET a = SQR(c ^ 2 - b ^ 2)
|
|
LET y = ATN(b / a)
|
|
GOTO lab9
|
|
lab5:
|
|
LET b = SQR(c ^ 2 - a ^ 2)
|
|
LET y = ATN(b / a)
|
|
GOTO lab9
|
|
lab6:
|
|
LET y = ATN(b / a)
|
|
LET c = a / COS(y)
|
|
lab9:
|
|
'Output routine
|
|
LOCATE 1, 1
|
|
PRINT " ........ SOLUTION ........"
|
|
PRINT " Side A = "; a
|
|
PRINT " Side B = "; b
|
|
PRINT " Side C = "; c
|
|
PRINT " Angle a (deg) = "; 90 - y * rd
|
|
PRINT " Angle b (deg) = "; y * rd
|
|
PRINT " Area of Triangle = "; (a * b) / 2
|
|
LOCATE 29, 1
|
|
INPUT "Ctrl+Break > EXIT : Enter > MORE"; x
|
|
GOTO start |