10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  ********************
20  REM
30  REM              VOLSOL:  VOLUME OF SOLID OF REVOLUTION
40  REM
50  REM              36339  (A801)  REV A -- 10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  *************************************
80  REM VOLSOL - COPYRIGHT 1971, POLYTECHNIC INSTITUTE OF BROOKLYN
100  REM VOLUME OF A SOLID OF REVOLUTION, Q. J. O'CONNOR, 8/1/68
101  REM REVISED 8/24/70 (D. PESSEL)
110  PRINT TAB(15);"VOLUME OF A SOLID OF REVOLUTION"
111  PRINT 
115  PRINT "    THIS PROGRAM USES CYLINDRICAL DISCS TO APPROXIMATE"
117  PRINT "THE VOLUME OF A SOLID OF REVOLUTION.  THE SOLID IS GENE-"
120  PRINT "RATED BY ROTATING AB THE X-AXIS THE AREA BOUNDED BY"
130  PRINT "Y=F(X), THE LINES X=A AND X=B, AND THE X-AXIS."
135  PRINT 
140  PRINT "TO INPUT YOUR FUNCTION OF X (Y=F(X)) TYPE AS FOLLOWS:"
141  PRINT 
145  PRINT "          1 GO TO 200"
150  PRINT "          220 DEF FNY(X)=....(YOUR FUNCTION OF X)...."
160  PRINT "          RUN"
161  PRINT 
165  PRINT "FOR EXAMP, TO USE THE FUNCTION Y=X^2 YOU WOULD TYPE:"
166  PRINT 
167  PRINT "          1 GO TO 200"
168  PRINT "          220 DEF FNY(X)=X^2"
169  PRINT "          RUN"
170  PRINT 
175  PRINT "YOU MIGHT TRY THAT AS YOUR FIRST EXAMPLE."
176  PRINT "END EACH LINE, INCLUDING 'RUN', WITH THE 'RETURN' KEY."
180  STOP 
199  PRINT 
200  PRINT "WHAT ARE YOUR VALUES FOR A AND B (SMALLER FIRST: A,B)";
210  INPUT A,B
211  IF A<B THEN 214
212  PRINT "A MUST BE SMALLER THAN B!"
213  GOTO 200
214  PRINT 
215  PRINT "NUMBER OF           SUM OF                 % CHANGE"
216  PRINT "CYLINDERS      CYLINDER VOLUMES             IN SUM"
217  PRINT "---------      ----------------            --------"
218  LET V1=0
220  DEF FNY()=^2
230  FOR N=1 TO 10
240  LET D=2^(N-1)
250  LET H=(B-A)/D
260  LET V=0
270  FOR I=0 TO (D-1)
280  LET Y=FNY(A+I*H)
290  LET V=V+3.14159*Y*Y*H
300  NEXT I
305  IF V1=0 THEN 315
307  LET P=100*(ABS(V-V1))/V1
310  PRINT D,V," ",P
312  IF P<.5 THEN 330
313  GOTO 318
315  PRINT D,V,"    NO PREV. VALUE, OR IT WAS ZERO"
318  LET V1=V
320  NEXT N
330  PRINT 
333  PRINT 
334  PRINT "WOULD YOU LIKE TO TRY YOUR OWN 'NUMBER OF CYLINDERS' (1-YES";
335  PRINT ", 0-NO)";
336  INPUT Q5
337  IF Q5<1 THEN 377
338  PRINT "HOW MANY CYLINDERS WOULD YOU LIKE TO TRY";
339  INPUT D1
340  IF D1>1 THEN 343
341  PRINT "NUMBER OF CYLINDERS MUST BE GREATER THAN ZERO!"
342  GOTO 338
343  IF D1<600 THEN 347
344  PRINT "THIS IS A VERY LARGE NUMBER OF CYLINDERS AND MAY TAKE"
345  PRINT "A LONG TIME TO RUN."
347  LET V2=0
348  LET H1=(B-A)/D1
349  LET D1=INT(D1+.5)
350  FOR I=0 TO (D1-1)
352  LET Y1=FNY(A+I*H1)
354  LET V2=V2+3.14159*Y1*Y1*H1
356  NEXT I
358  PRINT 
360  PRINT "FOR "D1" CYLINDERS THE VOLUME IS "V2" ."
362  PRINT 
363  PRINT "WOULD YOU LIKE TO TRY AGAIN (1-YES, 0-NO)";
364  INPUT Q6
365  IF Q6>0 THEN 338
377  PRINT 
378  PRINT "*****"
379  PRINT 
380  PRINT "WOULD YOU LIKE TO TRY NEW VALUES OF A AND B (1-YES, 0-NO)";
382  INPUT Q1
384  IF Q1>0 THEN 199
386  PRINT "TO USE A NEW FUNCTION YOU NEED ONLY RETYPE LINE 220 AND"
388  PRINT "'RUN'.  SEE INSTRUCTIONS FOR MORE DETAILS."
390  PRINT "IF YOU ARE FINISHED, TYPE '1' AND THE 'RETURN' KEY."
500  END 
