1  REM  ****  HP BASIC PROGRAM LIBRARY  ********************************
2  REM
3  REM        IONIC1:    DRILL ON FORMULAS OF IONIC COMPOUNDS
4  REM
5  REM        36266  REV A  --  2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  *************************************
10  DIM A[30],B[30],C[30],D[30],A$[15],B$[15],C$[15],D$[15],E$[15]
20  DIM F$[15],G$[15]
30  A=10
40  FOR B=1 TO 23
50  A[B]=B
60  NEXT B
70  FOR B=1 TO 18
80  C[B]=B
90  NEXT B
100  N=1
110  B=INT((23-N+1)*RND(1))+1
120  C=INT((19-N)*RND(1))+1
130  B[N]=A[B]
140  D[N]=C[C]
150  A[B]=A[24-N]
160  C[C]=C[19-N]
170  IF N=A THEN 200
180  N=N+1
190  GOTO 110
200  PRINT "IONIC BONDS"
210  PRINT 
220  MAT A=ZER
230  F$="1234567890"
240  FOR B=1 TO A
250  FOR C=1 TO B[B]
260  READ A$,B$,D
270  NEXT C
280  RESTORE 960
290  FOR C=1 TO D[B]
300  READ C$,D$,F
310  NEXT C
320  F=ABS(F)
330  RESTORE 
340  FOR C=1 TO F
350  IF D*C/F=INT(D*C/F) THEN 370
360  NEXT C
370  D1=C
380  F1=C*D/F
390  IF D1=F1 THEN 410
400  IF B$="NH4" THEN 440
410  E$=B$
420  O=LEN(B$)+1
430  GOTO 480
440  E$[1,1]="("
450  E$[2]=B$
460  E$[LEN(B$)+2]=")"
470  O=LEN(B$)+3
480  IF D1=1 THEN 510
490  E$[O,O]=F$[D1,D1]
500  O=O+1
510  IF F1=D1 THEN 570
520  IF LEN(D$)>2 THEN 550
530  IF D$="OH" THEN 550
540  GOTO 570
550  IF F1=1 THEN 570
555  E$[O,O]="("
560  O=O+1
570  E$[O]=D$
580  O=O+LEN(D$)
590  IF F1=D1 THEN 670
600  IF LEN(D$)>2 THEN 640
610  IF D$="OH" THEN 640
630  GOTO 680
640  IF F1=1 THEN 670
645  O=LEN(E$)+1
650  E$[O]=")"
660  O=O+1
670  IF F1=1 THEN 700
680  O=LEN(E$)+1
685  IF F1=1 THEN 700
690  E$[O]=F$[F1,F1]
700  PRINT "WHAT IS THE COMPOUND FORMED FROM "A$" AND "C$" ."
710  ENTER 15,Z,G$
720  PRINT 
730  IF Z<0 THEN 780
740  IF G$=E$ THEN 810
750  PRINT "NO THE ANSWER IS "E$"."
760  A[1]=A[1]+1
770  GOTO 830
780  PRINT " TOO SLOW!!! THE ANSWER IS "E$"."
790  A[2]=A[2]+1
800  GOTO 830
810  PRINT " THAT IS  CORRECT... VERY GOOD!!!!!"
820  A[3]=A[3]+1
830  PRINT " YOU HAVE ANSWERED"A[3]" CORRECTLY OUT OF"B"."
840  PRINT '10'10'10
850  NEXT B
860  PRINT " YOU WERE WRONG "A[1]"TIMES."
870  PRINT " YOU WERE TOO SLOW "A[2]" TIMES."
880  DATA "ALUMINUM","AL",3,"AMMONIUM","NH4",1,"BARIUM","BA",2
890  DATA "CALCIUM","CA",2,"CHROMOUS","CR",2,"CHROMIC","CR",3
900  DATA "CUPROUS","CU",1,"CUPRIC","CU",2,"HYDROGEN","H",1
910  DATA "FERROUS","FE",2,"FERRIC","NE",3,"LEAD","PB",2
920  DATA "LITHIUM","LI",1,"MAGNESIUM","MG",2,"MERCUROUS","HG",1
930  DATA "MERCURIC","HG",2,"NICKEL","NI",2,"POTASSIUM","K",1
940  DATA "SILVER","AG",1,"SODIUM","NA",1,"STANNOUS","SN",2
950  DATA "STANNIC","SN",4,"ZINC","ZN",2
960  DATA "ACETATE","CH3COO",-1,"BROMIDE","BR",-1,"CARBONATE","CO3",-2
970  DATA "CHLORIDE","CL",-1,"CHROMATE","CRO4",-2,"DICHROMATE","CR2O7",-2
980  DATA "FLUORIDE","F",-1,"HYDROXIDE","OH",-1,"IODIDE","I",-1
990  DATA "NITRATE","NO3",-1,"NITRITE","NO2",-1,"OXALATE","C2O4",-2
1000  DATA "PERMANGANATE","MNO4",-1,"PHOSPHATE","PO4",-3,"OXIDE","O",-2
1010  DATA "SULFATE","SO4",-2,"SULFIDE","S",-2,"SULFITE","SO3",-2
1020  END 
