DIM NameFile AS STRING, OneLine AS STRING, char AS STRING, NameTask AS STRING DIM task AS STRING DIM NPeople AS INTEGER, NProblems AS INTEGER, NTasks(10) AS INTEGER DIM i AS INTEGER, j AS INTEGER, jstart AS INTEGER, j1 AS INTEGER CLS RANDOMIZE TIMER NameFile = COMMAND$ i = INSTR(NameFile, ".") IF i = 0 THEN NameFile = RTRIM$(NameFile) i = LEN(NameFile) + 1 NameFile = NameFile + ".chi" END IF OPEN NameFile FOR INPUT AS #1 OPEN "tsk.chi" FOR OUTPUT AS #2 OPEN "ans.chi" FOR OUTPUT AS #3 DO LINE INPUT #1, OneLine PRINT #2, OneLine PRINT #3, OneLine LOOP UNTIL LEFT$(OneLine, 4) = "\pTS" DO UNTIL EOF(1) LINE INPUT #1, OneLine IF LEFT$(OneLine, 5) = "*NAME" OR MID$(OneLine, 3, 5) = "*NAME" THEN PRINT OneLine PRINT "Do you want this task? "; char = INPUT$(1) PRINT char IF UCASE$(char) = "Y" THEN NameTask = OneLine EXIT DO END IF END IF LOOP PRINT INPUT "Number of people"; NPeople DIM Variant(10, NPeople) AS INTEGER NProblems = 0 DO UNTIL LEFT$(OneLine, 9) = "*END NAME" OR MID$(OneLine, 3, 9) = "*END NAME" LINE INPUT #1, OneLine IF LEFT$(OneLine, 8) = "*PROBLEM" OR MID$(OneLine, 3, 8) = "*PROBLEM" THEN NProblems = NProblems + 1 NTasks(NProblems) = 0 DO UNTIL LEFT$(OneLine, 12) = "*END PROBLEM" OR MID$(OneLine, 3, 12) = "*END PROBLEM" LINE INPUT #1, OneLine IF LEFT$(OneLine, 5) = "*TASK" OR MID$(OneLine, 3, 5) = "*TASK" THEN NTasks(NProblems) = NTasks(NProblems) + 1 END IF LOOP FOR i = 1 TO NPeople jstart = ((i - 1) \ NTasks(NProblems)) * NTasks(NProblems) + 1 DO Okay = -1 Variant(NProblems, i) = INT(RND * NTasks(NProblems) + 1) FOR j = jstart TO i - 1 IF Variant(NProblems, j) = Variant(NProblems, i) THEN Okay = 0 END IF NEXT j LOOP WHILE NOT Okay NEXT i PRINT "Problem "; NProblems; " "; NTasks(NProblems); "tasks" FOR i = 1 TO NPeople PRINT Variant(NProblems, i); NEXT i PRINT END IF LOOP DIM Temp(NProblems, NPeople) AS STRING CLOSE #1 OPEN NameFile FOR INPUT AS #1 DO LINE INPUT #1, OneLine LOOP UNTIL OneLine = NameTask FOR i = 1 TO NProblems DO LINE INPUT #1, OneLine LOOP UNTIL LEFT$(OneLine, 8) = "*PROBLEM" OR MID$(OneLine, 3, 8) = "*PROBLEM" FOR j = 1 TO NTasks(i) DO LINE INPUT #1, OneLine LOOP UNTIL LEFT$(OneLine, 5) = "*TASK" OR MID$(OneLine, 3, 5) = "*TASK" task = "" LINE INPUT #1, OneLine DO UNTIL LEFT$(OneLine, 4) = "*END" OR MID$(OneLine, 3, 4) = "*END" task = task + OneLine + CHR$(10) LINE INPUT #1, OneLine LOOP FOR j1 = 1 TO NPeople IF Variant(i, j1) = j THEN Temp(i, j1) = task END IF NEXT j1 NEXT j NEXT i FOR j = 1 TO NPeople FOR i = 1 TO NProblems PRINT #2, "\+\1" PRINT #2, Temp(i, j); PRINT #2, "\+" + CHR$(10) NEXT i PRINT #2, "\+" + CHR$(12) + CHR$(10) NEXT j CLOSE #2 CLOSE #3