home *** CD-ROM | disk | FTP | other *** search
- 100 CLS
- 110 A$=STRING$(80,205)
- 120 PRINT A$
- 130 PRINT TAB(34)"DECIDE #2001"
- 140 COLOR 23
- 150 PRINT :PRINT :PRINT TAB(39)"IPCO"
- 160 COLOR 7
- 170 PRINT :PRINT :PRINT TAB(25)"PERSONAL COMPUTER OWNERS GROUP"
- 180 PRINT :PRINT :PRINT TAB(19)"p.o. box 10426, pittsburgh, pennsylvania 15234"
- 190 PRINT A$
- 200 PRINT :PRINT :PRINT :PRINT
- 210 PRINT TAB(28)"PRESS ANY KEY TO CONTINUE"
- 220 A$=INKEY$:IF A$="" THEN 220
- 250 CLEAR 500
- 260 MD=10
- 270 DIM L$(MD),F$(MD),V(MD),C(MD,MD),D(MD),Z(MD)
- 280 E$="END"
- 290 GOSUB 1530
- 300 PRINT "I CAN HELP YOU MAKE A DECISION. ALL I NEED TO DO IS ASK SOME QUESTIONS AND THENANALYZE THE INFORMATION YOU GIVE."
- 310 PRINT:PRINT TAB(10) STRING$(60,205):PRINT
- 320 PRINT "WHICH OF THESE BEST DESCRIBES THE TYPE OF DECISION FACING YOU?"
- 330 PRINT :PRINT " 1) CHOOSING AN ITEM FROM VARIOUS ALTERNATIVES."
- 340 PRINT " 2) CHOOSING A COURSE OF ACTION FROM VARIOUS ALTERNATIVES."
- 350 PRINT " 3) MAKING A `YES' OR `NO' DECISION."
- 360 PRINT :PRINT"WHICH ONE (1,2, OR 3)?":
- 370 R$=INKEY$:IF R$="" THEN 370
- 380 T=VAL(R$):IF T<1 OR T>3 THEN 370
- 390 PRINT T:GOSUB 1530
- 400 FOR J=1 TO 9:R$=INKEY$:NEXT:ON T GOTO 410,430,440
- 410 PRINT"WHAT TYPE OF ITEM MUST YOU DECIDE UPON?"
- 420 INPUT T$:GOTO 470
- 430 T$="COURSE OF ACTION":GOTO 470
- 440 T$="'YES' OR 'NO'"
- 450 NI=2:L$(1)="DECIDING YES":L$(2)="DECIDING NO"
- 460 GOTO 690
- 470 GOSUB 1530:NI=0
- 480 PRINT"I NEED TO HAVE A LIST OF EACH ";T$;" UNDER CONSIDERATION.":PRINT
- 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."
- 520 PRINT :PRINT"TYPE THE WORD `";E$;"' TO INDICATE THAT THE WHOLE LIST HAS BEEN ENTERED.":PRINT
- 530 IF NI>=MD THEN PRINT "--LIST FULL--":GOTO 570
- 540 NI=NI+1:INPUT L$(NI)
- 550 IF L$(NI)<>E$ THEN 530
- 560 NI=NI-1
- 570 IF NI>=2 THEN 600
- 580 PRINT :PRINT"YOU MUST HAVE AT LEAST 2 CHOICES!":PRINT
- 590 PRINT"TRY AGAIN":GOSUB 1550:GOTO 470
- 600 GOSUB 1530:PRINT"O.K. HERE'S THE LIST YOU'VE GIVEN ME:":PRINT
- 610 FOR J=1 TO NI:PRINT" ";J;CHR$(24);") ";L$(J):NEXT:PRINT
- 620 FOR J=1 TO 9:R$=INKEY$:NEXT:PRINT"IS THIS LIST CORRECT (Y OR N) ?";
- 630 R$=INKEY$:IF R$="" THEN 630
- 640 IF R$="Y" THEN PRINT "YES":GOTO 690
- 650 IF R$="N" THEN PRINT"NO"
- 660 IF R$="N" THEN PRINT:PRINT"THE LIST MUST BE RE-ENTERED"
- 670 IF R$="N" THEN GOSUB 1550:GOSUB 470
- 680 GOTO 630
- 690 GOSUB 1530:FOR J=1 TO 9:R$=INKEY$:NEXT
- 700 PRINT"NOW, THINK OF THE DIFFERENT FACTORS ";
- 710 IF T<3 THEN PRINT"THAT ARE IMPORTANT TO YOU IN CHOOSING THE BEST ";T$;"."
- 730 IF T=3 THEN PRINT" THAT ARE IMPORTANT TO YOU IN DECIDING ";T$;"."
- 740 PRINT :PRINT"INPUT THEM ONE AT A TIME IN RESPONSE TO EACH QUESTION MARK.":PRINT
- 750 PRINT"TYPE THE WORD`";E$;"' TO TERMINATE THE LIST."
- 760 PRINT :NF=0
- 770 IF NF>=MD THEN PRINT"--LIST FULL --":PRINT:GOTO 810
- 780 NF=NF+1:INPUT F$(NF)
- 790 IF F$(NF)<>E$ THEN 770
- 800 NF=NF-1:PRINT
- 810 IF NF<1 THEN PRINT"YOU MUST HAVE AT LEAST ONE ! REDO IT"
- 820 IF NF<1 THEN GOSUB 1550:GOTO 690
- 830 GOSUB 1530: PRINT"HERE'S THE LIST OF FACTORS YOU GAVE ME:":PRINT
- 840 FOR J=1 TO NF:PRINT " ";J;CHR$(24);") ";F$(J):NEXT:PRINT
- 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."
- 870 PRINT
- 880 INPUT A:A=INT(A):IF A=0 THEN 690
- 890 IF A>NF OR A<0 THEN 830
- 900 GOSUB 1530:IF NF=1 THEN 1020
- 910 PRINT"NOW LET'S SUPPOSE WE HAVE A SCALE OF IMPORTANCE RANGING FROM 0 TO 10."
- 930 PRINT:PRINT" WE'LL GIVE ";F$(A);" A VALUE OF 10 SINCE ";F$(A)
- 950 PRINT" WAS RATED THE MOST IMPORTANT.":PRINT
- 960 PRINT"ON THIS SCALE, WHAT VALUE OF IMPORTANCE WOULD THE OTHER FACTORS HAVE?"
- 980 FOR J=1 TO NF:IF J=A THEN 1010
- 990 PRINT:PRINT F$(J):INPUT THE (J)
- 1000 IF V(J)<0 OR V(J)>10 THEN
- 1010 NEXT
- 1020 V(A)=10:Q=O:FOR J=1 TO NF:Q=Q+V(J):NEXT:FOR J=1 TO NF
- 1030 V(J)=V(J)/Q:NEXT:GOSUB 1530
- 1040 IF T<>3 THEN PRINT"EACH ";T$;
- 1050 IF T=3 THEN PRINT"DECIDING `YES' OR DECIDING `NO' ";
- 1060 PRINT " MUST NOW BE COMPAIRED WITH RESPECT TO EACH IMPORTANCE FACTOR."
- 1080 PRINT "WE'LL CONSIDER EACH FACTOR SEPARATELY AND THEN RATE";
- 1090 IF T<>3 THEN PRINT" EACH ";T$" IN TERMS";
- 1100 IF T=3 THEN PRINT"DECIDING `YES' OR DECIDING `NO' IN TERMS ";
- 1110 PRINT " OF THAT FACTOR ONLY.":PRINT
- 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."
- 1150 PRINT " THIS VALUE DEPENDS ON HOW MUCH YOU THINK IT IS BETTER OR WORSE THAN ";L$(1);"."
- 1180 PRINT " ********* (HIT ANY KEY TO CONTINUE)"
- 1190 R$=INKEY$:IF R$="" THEN 1190
- 1200 FOR J=1 TO NF
- 1210 PRINT TAB(8);STRING$(25,"-")
- 1220 PRINT "CONSIDERING ONLY ";F$(J);" AND ASSIGNING 10 TO ";L$(1);" ;"
- 1240 PRINT "WHAT VALUE WOULD YOU ASSIGN TO ";
- 1250 FOR K=2 TO NI
- 1260 PRINT L$(K);:INPUT C(K,J):IF C(K,J)>=0 THEN 1280
- 1270 PRINT " -- NEGATIVE VALUES NOT LEGAL --":GOTO 1260
- 1280 NEXT:PRINT:C(1,J)=10:NEXT
- 1290 FOR J=1 TO NF:Q=0:FOR K=1 TO NI
- 1300 Q=Q+C(K,J):NEXT:FOR K=1 TO NI
- 1310 C(K,J)=C(K,J)/Q:NEXT:NEXT
- 1320 FOR K=1 TO NI:D(K)=0:FOR J=1 TO NF
- 1330 D(K)=D(K)+C(K,J)*V(J):NEXT:NEXT
- 1340 MX=0:FOR K=1 TO NI
- 1350 IF D(K)>MX THEN MX=D(K)
- 1360 NEXT:FOR K=1 TO NI:D(K)=D(K)*100/MX:NEXT
- 1370 FOR K=1 TO NI:Z(K)=K:NEXT:NM=NI-1
- 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
- 1390 Z(J+1)=N1:Z(J)=N2
- 1400 NEXT:NEXT:J1=Z(1):J2=Z(2):DF=D(J1)-D(J2):GOSUB 1530
- 1410 PRINT L$(J1);
- 1420 PRINT" COMES OUT BEST";
- 1430 IF DF<5 THEN PRINT " BUT IT'S VERY CLOSE.":GOTO 1470
- 1440 IF DF<10 THEN PRINT" BUT IT'S FAIRLY CLOSE.":GOTO 1470
- 1450 IF DF<20 THEN PRINT" BY A FAIR AMOUNT.":GOTO 1470
- 1460 PRINT" QUITE DECISIVELY."
- 1470 PRINT TAB(16)"******* HERE IS THE FINAL LIST IN ORDER ********"
- 1480 PRINT L$(J1);" HAS BEEN GIVEN A VALUE OF 100 AND THE OTHERS RATED ACCORDINGLY."
- 1500 PRINT TAB(10) STRING$(60,205)
- 1510 FOR J=1 TO NI:Q=Z(J):PRINT D(Q),L$(Q):NEXT
- 1520 END
- 1530 FOR J=1 TO 400:NEXT
- 1540 CLS:PRINT TAB(26);"DECIDE":PRINT:RETURN
- 1550 FOR J=1 TO 1500:NEXT:RETURN
- $(Q):NEXT
- 1520 END
- 1530 FOR J=1 TO 400:NEXT
- 1540 CLS:PRINT TAB(26);"DECIDE":PRINT:RETURN
- 1550 FOR J=1 TO