Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Basic


Ответ
 
Опции темы Опции просмотра
Старый 23.10.2016, 12:37   #1 (permalink)
iks2
Member
 
Регистрация: 22.10.2016
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Как решать ребусы

Меня интересует программа, которая могла бы решать ребусы. Очевидно, что часть кода я должен вносить сам (например в какую-нибудь процедуру), но часть кода должна быть постоянной. Чтобы лучше понять о чем идет речь решим реальную задачу.
Задача.
Найти натуральное десятизначное число, все цифры которого различны. Кроме того это число должно удовлетворять условиям
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
iks2 вне форума   Ответить с цитированием

Старый 23.10.2016, 12:37
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Зачастую на форуме создаются много аналогичных тем

Free Pascal. Полный перебор. Арифметические ребусы
Не могу разобраться как это решать???
Советы как решать тесты
Как решать такие задачи?

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:19.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.