DEFINE MAX_NUMBERS="200" DEFINE MAX_LEN="20" DEFINE MAX_FACTORS="5" DEFINE PTR="CARD" PROC PrintResult(BYTE max,n BYTE ARRAY factors PTR ARRAY texts) BYTE i,j,t BYTE ARRAY values(MAX_FACTORS) FOR j=0 TO n-1 DO values(j)=1 OD FOR i=1 TO max DO t=0 FOR j=0 TO n-1 DO IF values(j)=0 THEN t=1 Print(texts(j)) FI values(j)==+1 IF values(j)=factors(j) THEN values(j)=0 FI OD IF t=0 THEN PrintB(i) FI Put(32) OD RETURN BYTE FUNC Find(CHAR ARRAY s CHAR c BYTE POINTER err) BYTE i FOR i=1 TO s(0) DO IF s(i)=c THEN err^=0 RETURN (i) FI OD err^=1 RETURN (0) PROC Main() BYTE max,i,n,pos,err BYTE ARRAY factors(MAX_FACTORS) PTR ARRAY texts(MAX_FACTORS) CHAR ARRAY s(100),tmp(100), t0(MAX_LEN),t1(MAX_LEN),t2(MAX_LEN), t3(MAX_LEN),t4(MAX_LEN) texts(0)=t0 texts(1)=t1 texts(2)=t2 texts(3)=t3 texts(4)=t4 DO PrintF("Max number (1-%B): ",MAX_NUMBERS) max=InputB() UNTIL max>=1 AND max<=MAX_NUMBERS OD n=0 DO PrintF("Number of rules (1-%B): ",MAX_FACTORS) n=InputB() UNTIL n>=1 AND n<=MAX_FACTORS OD FOR i=0 TO n-1 DO DO PrintF("Rule #%B (number space text):",i+1) InputS(s) pos=Find(s,' ,@err) IF pos=1 OR pos=s(0) THEN err=1 FI IF err=0 THEN SCopyS(tmp,s,1,pos-1) factors(i)=ValB(tmp) IF factors(i)<2 THEN err=1 FI SCopyS(texts(i),s,pos+1,s(0)) FI UNTIL err=0 OD OD PutE() PrintResult(max,n,factors,texts) RETURN