home *** CD-ROM | disk | FTP | other *** search
/ The CIA World Factbook 1992 / k3bimage.iso / sel / 01 / 0049 / decide.bas next >
Encoding:
BASIC Source File  |  1991-12-02  |  6.0 KB  |  135 lines

  1. 100 CLS
  2. 110 A$=STRING$(80,205)
  3. 120 PRINT A$
  4. 130 PRINT TAB(34)"DECIDE #2001"
  5. 140 COLOR 23
  6. 150 PRINT :PRINT :PRINT TAB(39)"IPCO"
  7. 160 COLOR 7
  8. 170 PRINT :PRINT :PRINT TAB(25)"PERSONAL COMPUTER OWNERS GROUP"
  9. 180 PRINT :PRINT :PRINT TAB(19)"p.o. box 10426, pittsburgh, pennsylvania 15234"
  10. 190 PRINT A$
  11. 200 PRINT :PRINT :PRINT :PRINT
  12. 210 PRINT TAB(28)"PRESS ANY KEY TO CONTINUE"
  13. 220 A$=INKEY$:IF A$="" THEN 220
  14. 250 CLEAR 500
  15. 260 MD=10
  16. 270 DIM L$(MD),F$(MD),V(MD),C(MD,MD),D(MD),Z(MD)
  17. 280 E$="END"
  18. 290 GOSUB 1530
  19. 300 PRINT "I CAN HELP YOU MAKE A DECISION.  ALL I NEED TO DO IS ASK SOME QUESTIONS AND THENANALYZE THE INFORMATION YOU GIVE."
  20. 310 PRINT:PRINT TAB(10) STRING$(60,205):PRINT
  21. 320 PRINT "WHICH OF THESE BEST DESCRIBES THE TYPE OF DECISION FACING YOU?"
  22. 330 PRINT :PRINT "  1) CHOOSING AN ITEM FROM VARIOUS ALTERNATIVES."
  23. 340 PRINT "  2) CHOOSING A COURSE OF ACTION FROM VARIOUS ALTERNATIVES."
  24. 350 PRINT "  3) MAKING A `YES' OR `NO' DECISION."
  25. 360 PRINT :PRINT"WHICH ONE (1,2, OR 3)?":
  26. 370 R$=INKEY$:IF R$="" THEN 370
  27. 380 T=VAL(R$):IF T<1 OR T>3 THEN 370
  28. 390 PRINT  T:GOSUB 1530
  29. 400 FOR J=1 TO 9:R$=INKEY$:NEXT:ON T GOTO 410,430,440
  30. 410 PRINT"WHAT TYPE OF ITEM MUST YOU DECIDE UPON?"
  31. 420 INPUT T$:GOTO 470
  32. 430 T$="COURSE OF ACTION":GOTO 470
  33. 440 T$="'YES' OR 'NO'"
  34. 450 NI=2:L$(1)="DECIDING YES":L$(2)="DECIDING NO"
  35. 460 GOTO  690
  36. 470 GOSUB 1530:NI=0
  37. 480 PRINT"I NEED TO HAVE A LIST OF EACH ";T$;" UNDER CONSIDERATION.":PRINT
  38. 500 PRINT"INPUT THEM ONE AT A TIME IN RESPONSE TO EACH QUESTION MARK.  THE ORDER IN WHICH   YOU INPUT THEM HAS NO SPECIAL SIGNIFICANCE."
  39. 520 PRINT :PRINT"TYPE THE WORD `";E$;"' TO INDICATE THAT THE WHOLE LIST HAS BEEN ENTERED.":PRINT
  40. 530 IF NI>=MD THEN PRINT "--LIST FULL--":GOTO  570
  41. 540 NI=NI+1:INPUT L$(NI)
  42. 550 IF L$(NI)<>E$ THEN 530
  43. 560 NI=NI-1
  44. 570 IF NI>=2 THEN 600
  45. 580 PRINT :PRINT"YOU MUST HAVE AT LEAST 2 CHOICES!":PRINT
  46. 590 PRINT"TRY AGAIN":GOSUB 1550:GOTO 470
  47. 600 GOSUB 1530:PRINT"O.K. HERE'S THE LIST YOU'VE GIVEN ME:":PRINT
  48. 610 FOR J=1 TO NI:PRINT"  ";J;CHR$(24);") ";L$(J):NEXT:PRINT
  49. 620 FOR J=1 TO 9:R$=INKEY$:NEXT:PRINT"IS THIS LIST CORRECT (Y OR N) ?";
  50. 630 R$=INKEY$:IF R$="" THEN 630
  51. 640 IF R$="Y" THEN PRINT "YES":GOTO 690
  52. 650 IF R$="N" THEN PRINT"NO"
  53. 660 IF R$="N" THEN PRINT:PRINT"THE LIST MUST BE RE-ENTERED"
  54. 670 IF R$="N" THEN GOSUB 1550:GOSUB 470
  55. 680 GOTO 630
  56. 690 GOSUB 1530:FOR J=1 TO 9:R$=INKEY$:NEXT
  57. 700 PRINT"NOW, THINK OF THE DIFFERENT FACTORS ";
  58. 710 IF T<3 THEN PRINT"THAT ARE IMPORTANT TO YOU IN CHOOSING THE BEST ";T$;"."
  59. 730 IF T=3 THEN PRINT" THAT ARE IMPORTANT TO YOU IN DECIDING ";T$;"."
  60. 740 PRINT :PRINT"INPUT THEM ONE AT A TIME IN RESPONSE TO EACH QUESTION MARK.":PRINT
  61. 750 PRINT"TYPE THE WORD`";E$;"' TO TERMINATE THE LIST."
  62. 760 PRINT :NF=0
  63. 770 IF NF>=MD THEN PRINT"--LIST FULL --":PRINT:GOTO 810
  64. 780 NF=NF+1:INPUT F$(NF)
  65. 790 IF F$(NF)<>E$ THEN 770
  66. 800 NF=NF-1:PRINT
  67. 810 IF NF<1 THEN PRINT"YOU MUST HAVE AT LEAST ONE ! REDO IT"
  68. 820 IF NF<1 THEN GOSUB 1550:GOTO 690
  69. 830 GOSUB 1530: PRINT"HERE'S THE LIST OF FACTORS YOU GAVE ME:":PRINT
  70. 840 FOR J=1 TO NF:PRINT "  ";J;CHR$(24);") ";F$(J):NEXT:PRINT
  71. 850 PRINT"DECIDE WHICH FACTOR ON THE LIST IS THE MOST IMPORTANT AND INPUT IT'S NUMBER.     (TYPE 0 IF THE LIST NEEDS TO BE CHANGED."
  72. 870 PRINT
  73. 880 INPUT A:A=INT(A):IF A=0 THEN 690
  74. 890 IF A>NF OR A<0 THEN 830
  75. 900 GOSUB 1530:IF NF=1 THEN 1020
  76. 910 PRINT"NOW LET'S SUPPOSE WE HAVE A SCALE OF IMPORTANCE RANGING FROM 0 TO 10."
  77. 930 PRINT:PRINT"  WE'LL GIVE ";F$(A);" A VALUE OF 10 SINCE ";F$(A)
  78. 950 PRINT" WAS RATED THE MOST IMPORTANT.":PRINT
  79. 960 PRINT"ON THIS SCALE, WHAT VALUE OF IMPORTANCE WOULD THE OTHER FACTORS HAVE?"
  80. 980 FOR J=1 TO NF:IF J=A THEN 1010
  81. 990 PRINT:PRINT F$(J):INPUT THE (J)
  82. 1000 IF V(J)<0 OR V(J)>10 THEN
  83. 1010 NEXT
  84. 1020 V(A)=10:Q=O:FOR J=1 TO NF:Q=Q+V(J):NEXT:FOR J=1 TO NF
  85. 1030 V(J)=V(J)/Q:NEXT:GOSUB 1530
  86. 1040 IF T<>3 THEN PRINT"EACH ";T$;
  87. 1050 IF T=3 THEN PRINT"DECIDING `YES' OR DECIDING `NO' ";
  88. 1060 PRINT " MUST NOW BE COMPAIRED WITH RESPECT TO EACH IMPORTANCE FACTOR."
  89. 1080 PRINT "WE'LL CONSIDER EACH FACTOR SEPARATELY AND THEN RATE";
  90. 1090 IF T<>3 THEN PRINT" EACH ";T$" IN TERMS";
  91. 1100 IF T=3 THEN PRINT"DECIDING `YES' OR DECIDING `NO' IN TERMS ";
  92. 1110 PRINT " OF THAT FACTOR ONLY.":PRINT
  93. 1120 PRINT "LET'S GIVE ";L$(1);" A VALUE OF 10 ON EVERY SCALE.  THE OTHER ";T$;" UNDER CONSIDERATION WILL BE ASSIGNED A VALUE HIGHER OR LOWER THAN 10."
  94. 1150 PRINT " THIS VALUE DEPENDS ON HOW MUCH YOU THINK IT IS BETTER OR WORSE THAN ";L$(1);"."
  95. 1180 PRINT " ********* (HIT ANY KEY TO CONTINUE)"
  96. 1190 R$=INKEY$:IF R$="" THEN 1190
  97. 1200 FOR J=1 TO NF
  98. 1210 PRINT  TAB(8);STRING$(25,"-")
  99. 1220 PRINT "CONSIDERING ONLY ";F$(J);" AND ASSIGNING 10 TO ";L$(1);" ;"
  100. 1240 PRINT "WHAT VALUE WOULD YOU ASSIGN TO ";
  101. 1250 FOR K=2 TO NI
  102. 1260 PRINT L$(K);:INPUT C(K,J):IF C(K,J)>=0 THEN 1280
  103. 1270 PRINT "  -- NEGATIVE VALUES NOT LEGAL --":GOTO 1260
  104. 1280 NEXT:PRINT:C(1,J)=10:NEXT
  105. 1290 FOR J=1 TO NF:Q=0:FOR K=1 TO NI
  106. 1300 Q=Q+C(K,J):NEXT:FOR K=1 TO NI
  107. 1310 C(K,J)=C(K,J)/Q:NEXT:NEXT
  108. 1320 FOR K=1 TO NI:D(K)=0:FOR J=1 TO NF
  109. 1330 D(K)=D(K)+C(K,J)*V(J):NEXT:NEXT
  110. 1340 MX=0:FOR K=1 TO NI
  111. 1350 IF D(K)>MX THEN MX=D(K)
  112. 1360 NEXT:FOR K=1 TO NI:D(K)=D(K)*100/MX:NEXT
  113. 1370 FOR K=1 TO NI:Z(K)=K:NEXT:NM=NI-1
  114. 1380 FOR K=1 TO NI:FOR J=1 TO NM:N1=Z(J):N2=Z(J+1): IF D(N1)>D(N2) THEN 1400
  115. 1390 Z(J+1)=N1:Z(J)=N2
  116. 1400 NEXT:NEXT:J1=Z(1):J2=Z(2):DF=D(J1)-D(J2):GOSUB 1530
  117. 1410 PRINT L$(J1);
  118. 1420 PRINT" COMES OUT BEST";
  119. 1430 IF DF<5 THEN PRINT " BUT IT'S VERY CLOSE.":GOTO 1470
  120. 1440 IF DF<10 THEN PRINT" BUT IT'S FAIRLY CLOSE.":GOTO 1470
  121. 1450 IF DF<20 THEN PRINT" BY A FAIR AMOUNT.":GOTO 1470
  122. 1460 PRINT" QUITE DECISIVELY."
  123. 1470 PRINT TAB(16)"******* HERE IS THE FINAL LIST IN ORDER ********"
  124. 1480 PRINT L$(J1);" HAS BEEN GIVEN A VALUE OF 100 AND THE OTHERS RATED ACCORDINGLY."
  125. 1500 PRINT TAB(10) STRING$(60,205)
  126. 1510 FOR J=1 TO NI:Q=Z(J):PRINT D(Q),L$(Q):NEXT
  127. 1520 END
  128. 1530 FOR J=1 TO 400:NEXT
  129. 1540 CLS:PRINT TAB(26);"DECIDE":PRINT:RETURN
  130. 1550 FOR J=1 TO 1500:NEXT:RETURN
  131. $(Q):NEXT
  132. 1520 END
  133. 1530 FOR J=1 TO 400:NEXT
  134. 1540 CLS:PRINT TAB(26);"DECIDE":PRINT:RETURN
  135. 1550 FOR J=1 TO