Меня интересует программа, которая могла бы решать ребусы. Очевидно, что часть кода я должен вносить сам (например в какую-нибудь процедуру), но часть кода должна быть постоянной. Чтобы лучше понять о чем идет речь решим реальную задачу.
Задача.
Найти натуральное десятизначное число, все цифры которого различны. Кроме того это число должно удовлетворять условиям
2. число, составленное из первых двух цифр числа, делится на 2
3. число, составленное из первых трех цифр числа, делится на 3
4. число, составленное из первых четырех цифр числа, делится на 4
5-9. и так далее до 9.
10. и наконец само число делится на 10.
Предлагаемая вашему вниманию программа решает данную задачу. Она запрашивает ввести число равное количеству неизвестных цифр, обращается к соответствующей процедуре для решения задачи. Необходимый код вставлен прямо в процедуру. Но мне бы хотелось написать более универсальную программу. Как я вначале сказал, записать весь код в отдельную процедуру. И тогда, запущенная программа должна вызвать необходимую процедуру, которая в свою очередь вызывает процедуру для решения задачи. Пример был дан. Как это сделать?
Код:
REM
REM 3816547290
REM
DECLARE SUB Cicl2 ()
DECLARE SUB Cicl3 ()
DECLARE SUB Cicl4 ()
DECLARE SUB Cicl5 ()
DECLARE SUB Cicl6 ()
DECLARE SUB Cicl7 ()
DECLARE SUB Cicl8 ()
DECLARE SUB Cicl9 ()
DECLARE SUB Cicl10 ()
DEFLNG A-Z
CLS
INPUT "N = "; n
SELECT CASE n
CASE 2: CALL Cicl2
CASE 3: CALL Cicl3
CASE 4: CALL Cicl4
CASE 5: CALL Cicl5
CASE 6: CALL Cicl6
CASE 7: CALL Cicl7
CASE 8: CALL Cicl8
CASE 9: CALL Cicl9
CASE 10: CALL Cicl10
END SELECT
END
SUB Cicl10
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 200
FOR i3 = 0 TO 9
IF i3 = i1 OR i3 = i2 THEN 300
FOR i4 = 0 TO 9
IF i4 = i1 OR i4 = i2 OR i4 = i3 THEN 400
FOR i5 = 0 TO 9
IF i5 = i1 OR i5 = i2 OR i5 = i3 OR i5 = i4 THEN 500
FOR i6 = 0 TO 9
IF i6 = i1 OR i6 = i2 OR i6 = i3 OR i6 = i4 OR i6 = i5 THEN 600
FOR i7 = 0 TO 9
IF i7 = i1 OR i7 = i2 OR i7 = i3 OR i7 = i4 OR i7 = i5 OR i7 = i6 THEN 700
FOR i8 = 0 TO 9
IF i8 = i1 OR i8 = i2 OR i8 = i3 OR i8 = i4 OR i8 = i5 OR i8 = i6 OR i8 = i7 THEN 800
FOR i9 = 0 TO 9
IF i9 = i1 OR i9 = i2 OR i9 = i3 OR i9 = i4 OR i9 = i5 OR i9 = i6 OR i9 = i7 OR i9 = i8 THEN 900
i0 = 45 - (i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9)
REM ...............................................
IF i0 <> 0 THEN 900
a2 = 10 * i1 + i2
a3 = 10 * a2 + i3
a4 = 10 * a3 + i4
a5 = 10 * a4 + i5
a6 = 10 * a5 + i6
a7 = 10 * a6 + i7
a8 = 10 * a7 + i8
a9 = 10 * a8 + i9
IF a2 MOD 2 <> 0 THEN 200
IF a3 MOD 3 <> 0 THEN 300
IF a4 MOD 4 <> 0 THEN 400
IF a5 MOD 5 <> 0 THEN 500
IF a6 MOD 6 <> 0 THEN 600
IF a7 MOD 7 <> 0 THEN 700
IF a8 MOD 8 <> 0 THEN 800
IF a9 MOD 9 <> 0 THEN 900
PRINT a9
END
REM ................................................
900 : NEXT i9
800 : NEXT i8
700 : NEXT i7
600 : NEXT i6
500 : NEXT i5
400 : NEXT i4
300 : NEXT i3
200 : NEXT i2
NEXT i1
END SUB
SUB Cicl2
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 202
REM .................... KODE ....
202 : NEXT i2
NEXT i1
END SUB
SUB Cicl3
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 203
FOR i3 = 0 TO 9
IF i3 = i1 OR i3 = i2 THEN 303
REM .................... KODE ....
303 : NEXT i3
203 : NEXT i2
NEXT i1
END SUB
SUB Cicl4
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 204
FOR i3 = 0 TO 9
IF i3 = i1 OR i3 = i2 THEN 304
FOR i4 = 0 TO 9
IF i4 = i1 OR i4 = i2 OR i4 = i3 THEN 404
REM .................... KODE ....
404 : NEXT i4
304 : NEXT i3
204 : NEXT i2
NEXT i1
END SUB
SUB Cicl5
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 205
FOR i3 = 0 TO 9
IF i3 = i1 OR i3 = i2 THEN 305
FOR i4 = 0 TO 9
IF i4 = i1 OR i4 = i2 OR i4 = i3 THEN 405
FOR i5 = 0 TO 9
IF i5 = i1 OR i5 = i2 OR i5 = i3 OR i5 = i4 THEN 505
REM .................... KODE ....
505 : NEXT i5
405 : NEXT i4
305 : NEXT i3
205 : NEXT i2
NEXT i1
END SUB
SUB Cicl6
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 206
FOR i3 = 0 TO 9
IF i3 = i1 OR i3 = i2 THEN 306
FOR i4 = 0 TO 9
IF i4 = i1 OR i4 = i2 OR i4 = i3 THEN 406
FOR i5 = 0 TO 9
IF i5 = i1 OR i5 = i2 OR i5 = i3 OR i5 = i4 THEN 506
FOR i6 = 0 TO 9
IF i6 = i1 OR i6 = i2 OR i6 = i3 OR i6 = i4 OR i6 = i5 THEN 606
REM .................... KODE ....
606 : NEXT i6
506 : NEXT i5
406 : NEXT i4
306 : NEXT i3
206 : NEXT i2
NEXT i1
END SUB
SUB Cicl7
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 207
FOR i3 = 0 TO 9
IF i3 = i1 OR i3 = i2 THEN 307
FOR i4 = 0 TO 9
IF i4 = i1 OR i4 = i2 OR i4 = i3 THEN 407
FOR i5 = 0 TO 9
IF i5 = i1 OR i5 = i2 OR i5 = i3 OR i5 = i4 THEN 507
FOR i6 = 0 TO 9
IF i6 = i1 OR i6 = i2 OR i6 = i3 OR i6 = i4 OR i6 = i5 THEN 607
FOR i7 = 0 TO 9
IF i7 = i1 OR i7 = i2 OR i7 = i3 OR i7 = i4 OR i7 = i5 OR i7 = i6 THEN 707
REM .................... KODE ....
707 : NEXT i7
607 : NEXT i6
507 : NEXT i5
407 : NEXT i4
307 : NEXT i3
207 : NEXT i2
NEXT i1
END SUB
SUB Cicl8
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 208
FOR i3 = 0 TO 9
IF i3 = i1 OR i3 = i2 THEN 308
FOR i4 = 0 TO 9
IF i4 = i1 OR i4 = i2 OR i4 = i3 THEN 408
FOR i5 = 0 TO 9
IF i5 = i1 OR i5 = i2 OR i5 = i3 OR i5 = i4 THEN 508
FOR i6 = 0 TO 9
IF i6 = i1 OR i6 = i2 OR i6 = i3 OR i6 = i4 OR i6 = i5 THEN 608
FOR i7 = 0 TO 9
IF i7 = i1 OR i7 = i2 OR i7 = i3 OR i7 = i4 OR i7 = i5 OR i7 = i6 THEN 708
FOR i8 = 0 TO 9
IF i8 = i1 OR i8 = i2 OR i8 = i3 OR i8 = i4 OR i8 = i5 OR i8 = i6 OR i8 = i7 THEN 808
REM .................... KODE ....
808 : NEXT i8
708 : NEXT i7
608 : NEXT i6
508 : NEXT i5
408 : NEXT i4
308 : NEXT i3
208 : NEXT i2
NEXT i1
END SUB
SUB Cicl9
FOR i1 = 1 TO 9
FOR i2 = 0 TO 9
IF i2 = i1 THEN 209
FOR i3 = 0 TO 9
IF i3 = i1 OR i3 = i2 THEN 309
FOR i4 = 0 TO 9
IF i4 = i1 OR i4 = i2 OR i4 = i3 THEN 409
FOR i5 = 0 TO 9
IF i5 = i1 OR i5 = i2 OR i5 = i3 OR i5 = i4 THEN 509
FOR i6 = 0 TO 9
IF i6 = i1 OR i6 = i2 OR i6 = i3 OR i6 = i4 OR i6 = i5 THEN 609
FOR i7 = 0 TO 9
IF i7 = i1 OR i7 = i2 OR i7 = i3 OR i7 = i4 OR i7 = i5 OR i7 = i6 THEN 709
FOR i8 = 0 TO 9
IF i8 = i1 OR i8 = i2 OR i8 = i3 OR i8 = i4 OR i8 = i5 OR i8 = i6 OR i8 = i7 THEN 809
FOR i9 = 0 TO 9
IF i9 = i1 OR i9 = i2 OR i9 = i3 OR i9 = i4 OR i9 = i5 OR i9 = i6 OR i9 = i7 OR i9 = i8 THEN 909
REM .................... KODE ....
909 : NEXT i9
809 : NEXT i8
709 : NEXT i7
609 : NEXT i6
509 : NEXT i5
409 : NEXT i4
309 : NEXT i3
209 : NEXT i2
NEXT i1
END SUB