1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        EMPIR:   CALCULATES EMPIRICAL FORMULAS
4  REM
5  REM        36615 REV  A   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
50  REM EMPLR - COPYRIGHT 1971, POLYTECHNIC INSTITUTE OF BROOKLYN
100  REM  JOHN MARCHISOTTO  BASIC  7/14/69  PBI  EMPIR*
105  REM  REVISED BY C.LOSIK  7-31-70 
106  REM A(I)=ATOMIC NOS, B(I)=AT WTS AND THEN C(I)/B(I), C(I)=PCT COMP 
130  PRINT " THIS PROGRAM WILL FIND THE EMPIRICAL FORMULA FOR "
140  PRINT "ANY COMPOUND CONTAINING UP TO FIVE DIFFERENT ELEMENTS"
150  PRINT 
160  PRINT "  WHEN INFORMATION IS REQUESTED, TYPE IN THE ATOMIC"
170  PRINT " NUMBER, THE ATOMIC WEIGHT, AND THE PCT COMPOSITION BY"
180  PRINT " WEIGHT IN THAT ORDER; FOR EXAMPLE, IN THE COMPOUND S02,"
190  PRINT " THE DATA WOULD BE ENTERED AS FOLLOWS:  16,32,50 FOR"
200  PRINT " SULFUR AND 8,16,50 FOR OXYGEN."
210  PRINT 
220  DIM A[5],B[5],C[5]
230  LET W=0
240  PRINT " HOW MANY ELEMENTS DOES YOUR UNKNOWN COMPOUND CONTAIN";
280  INPUT Z
285  IF Z=1 THEN 930
290  FOR I=2 TO 5
295  IF I=Z THEN 320
300  NEXT I
305  PRINT "ENTER AN INTEGER FROM 1 TO 5."
310  GOTO 240
320  PRINT " ENTER THE ATOMIC NUMBER, THE ATOMIC WEIGHT, AND THE"
330  PRINT " PCT COMPOSITION FOR EACH OF THE ELEMENTS IN YOUR COMPOUND."
340  PRINT " BE SURE TO ENTER ONE SET OF NUMBERS FOR EACH QUESTION MARK."
350  LET S=0
355  LET F=1.E+25
357  PRINT 
360  FOR I=1 TO Z
370  PRINT TAB(5);I;".  ";
380  INPUT A[I],B[I],C[I]
383  LET B[I]=C[I]/B[I]
385  IF B[I]>F THEN 390
387  LET F=B[I]
389  REM  MAKE SURE SUM OF PCT COMPS = 100
390  LET S=S+C[I]
400  NEXT I
410  IF ABS(S-100)<.1 THEN 760
420  PRINT "THE PCT COMPOSITION DOES NOT TOTAL 100 PERCENT."
430  PRINT "ADJUST DATA AND REENTER."
440  GOTO 320
700  REM  PRINT RATIOS
760  PRINT 
770  PRINT " ATOMIC"," PCT. ","INITIAL","RATIO*2","RATIO*3"
780  PRINT "NUMBER","COMP.","RATIO"
800  FOR I=1 TO Z
810  PRINT A[I],C[I],INT(10*B[I]/F+.5)/10,
820  PRINT INT(20*B[I]/F+.5)/10,
830  PRINT INT(30*B[I]/F+.5)/10
840  NEXT I
845  PRINT 
850  IF W=1 THEN 950
870  PRINT " TO FIND THE EMPIRICAL FORMULA LOCATE THE FIRST RATIO"
880  PRINT " COLUMN IN WHICH ALL OF THE NUMBERS MOST CLOSELY APPROXIMATE"
890  PRINT " A WHOLE NUMBER."
900  GOTO 950
930  PRINT " THE EMPIRICAL FORMULA FOR A COMPOUND THAT CONTAINS ONLY"
940  PRINT " A SINGLE ELEMENT IS STRAIGHTFORWARD."
945  PRINT 
950  PRINT "IF YOU WOULD LIKE TO TRY AGAIN TYPE 1, IF NOT TYPE 0.";
980  INPUT W
985  PRINT 
990  IF W=1 THEN 240
1000  IF W <> 0 THEN 950
1070  END 
