Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для ToxabullY
10 / 13 / 0
Регистрация: 17.05.2011
Сообщений: 94

Решить ребус

09.12.2011, 12:37. Показов 2486. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Ищу помощи в написании программы для решения арифметических ребусов. Первая программа должна решать ребус, который я вложил, а вторая ребусы подобного вида. Очень надеюсь на Вашу помощь.
Заранее очень благодарен!
Миниатюры
Решить ребус  
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2011, 12:37
Ответы с готовыми решениями:

Написать программу решающую ребус
Написать программу для решения ребуса: некоторые цифры зашифрованы буквами. Одинаковым буквам соответствуют одинаковые цифры, разным –...

Найти ошибку в коде "Арифметический ребус"
Помогите, пожалуйста, написать код в VBA! Вот задание и его решение: Буду премного благодарен!

Решить ребус
Решить ребус: ОДИН ОДИН + ОДИН один один = пять

8
 Аватар для KoGG
5645 / 1627 / 418
Регистрация: 23.12.2010
Сообщений: 2,444
Записей в блоге: 1
13.12.2011, 17:56
Вот, с помощью функций листа.
Вложения
Тип файла: xls Ариф_ребус.xls (19.0 Кб, 36 просмотров)
1
 Аватар для ToxabullY
10 / 13 / 0
Регистрация: 17.05.2011
Сообщений: 94
13.12.2011, 18:46  [ТС]
Цитата Сообщение от KoGG Посмотреть сообщение
Вот, с помощью функций листа.
так нет, Вы не поняли, мне нужна программа с перебором, которая будет рассчитывать данный ребус
1
 Аватар для KoGG
5645 / 1627 / 418
Регистрация: 23.12.2010
Сообщений: 2,444
Записей в блоге: 1
14.12.2011, 10:41
А есть подробное объяснение принципа решения ребуса? Просто перебором не решить.
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
14.12.2011, 12:05
Самое сложное - сделать имитацию ручного процесса деления.
Можно вписать формулы в идентичную структуру ниже на листе (или на другом листе), создать имена по буквам и использовать их в формулах.

Если взять только первое условие: ДВА х ТРИ = ШЕСТЬ, то уже останется не так много вариантов для перебора, т.к. накладываются ограничения:
Д, Т, Ш >0 (также А, Р, И >0 - из промежуточных вычислений)
произведение - 5-значное число, одна цифра - Т - должна совпадать, остальные не должны.
1
 Аватар для ToxabullY
10 / 13 / 0
Регистрация: 17.05.2011
Сообщений: 94
14.12.2011, 12:38  [ТС]
Так не обязательно, чтобы программа решала именно этот ребус. Она должна решать подобные.
0
 Аватар для KoGG
5645 / 1627 / 418
Регистрация: 23.12.2010
Сообщений: 2,444
Записей в блоге: 1
14.12.2011, 16:36
Перебором решает медленно, Казанский потом может ускорить.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
' Версия 01
Option Explicit
DefLng A-Z
Dim Podstanovka(10) As String, Reshenie(10)
 
Sub Solve()
    Dim a, b, c, d, e, f, g, h, i, j, k, l
    Dim Delimoe, Delitel, Chastnoe
    Dim ProizvedeniePervoe, ProizvedenieVtoroe, ProizvedenieTretye
    Dim OstatokPervyy, OstatokVtoroy
    Dim DelimoeW As String, DelitelW As String, ChastnoeW As String
    Dim ProizvedeniePervoeW As String, ProizvedenieVtoroeW As String, ProizvedenieTretyeW As String
    Dim OstatokPervyyW As String, OstatokVtoroyW As String
    Dim BukvaChastnogo As String, CifraChastnogo
    For i = 1 To 10
        Podstanovka(i) = Cells(i, 15).Value
    Next i
    DelimoeW = [A1] & [B1] & [C1] & [D1] & [E1]
    ProizvedeniePervoeW = [A2] & [B2] & [C2]
    OstatokPervyyW = [B3] & [C3] & [D3]
    ProizvedenieVtoroeW = [B4] & [C4] & [D4]
    OstatokVtoroyW = [C5] & [D5] & [E5]
    ProizvedenieTretyeW = [C6] & [D6] & [E6]
    DelitelW = [F1] & [G1] & [H1]
    ChastnoeW = [F2] & [G2] & [H2]
    [A11:H16].ClearContents
    [P1:P10].ClearContents
    For a = 0 To 9 'перебор предположений для 1-ой буквы
        For b = 0 To 9 'перебор предположений для 2-ой буквы
            If b <> a Then
                For c = 0 To 9 'перебор предположений для 3-ей буквы
                    If c <> a And c <> b Then
                        For d = 0 To 9 'перебор предположений для 4-ой буквы
                            Select Case d
                              Case a, b, c
                              Case Else
                                For e = 0 To 9 'перебор предположений для 5-ой буквы
                                    Select Case e
                                      Case a, b, c, d
                                      Case Else
                                        For f = 0 To 9 'перебор предположений для 6-ой буквы
                                            Select Case f
                                              Case a, b, c, d, e
                                              Case Else
                                                For g = 0 To 9 'перебор предположений для 7-ой буквы
                                                    Select Case g
                                                      Case a, b, c, d, e, f
                                                      Case Else
                                                        For h = 0 To 9 'перебор предположений для 8-ой буквы
                                                            Select Case h
                                                              Case a, b, c, d, e, f, g
                                                              Case Else
                                                                For i = 0 To 9 'перебор предположений для 9-ой буквы
                                                                    Select Case i
                                                                      Case a, b, c, d, e, f, g, h
                                                                      Case Else
                                                                        For j = 0 To 9 'перебор предположений для 10-ой буквы
                                                                            Select Case j
                                                                              Case a, b, c, d, e, f, g, h, i
                                                                              Case Else
' <<-----------------------------------------------------------------------------<<
Reshenie(1) = a
Reshenie(2) = b
Reshenie(3) = c
Reshenie(4) = d
Reshenie(5) = e
Reshenie(6) = f
Reshenie(7) = g
Reshenie(8) = h
Reshenie(9) = i
Reshenie(10) = j
Delitel = DeShifrovka(DelitelW)
BukvaChastnogo = Mid(ChastnoeW, 3, 1)
CifraChastnogo = DeShifrovka(BukvaChastnogo)
ProizvedenieTretye = DeShifrovka(ProizvedenieTretyeW)
If Delitel * CifraChastnogo = ProizvedenieTretye Then
    BukvaChastnogo = Mid(ChastnoeW, 2, 1)
    CifraChastnogo = DeShifrovka(BukvaChastnogo)
    ProizvedenieVtoroe = DeShifrovka(ProizvedenieVtoroeW)
    If Delitel * CifraChastnogo = ProizvedenieVtoroe Then
        BukvaChastnogo = Mid(ChastnoeW, 1, 1)
        CifraChastnogo = DeShifrovka(BukvaChastnogo)
        ProizvedeniePervoe = DeShifrovka(ProizvedeniePervoeW)
        If Delitel * CifraChastnogo = ProizvedeniePervoe Then
            Chastnoe = DeShifrovka(ChastnoeW)
            Delimoe = DeShifrovka(DelimoeW)
            If Delitel * Chastnoe = Delimoe Then
                OstatokPervyy = DeShifrovka(OstatokPervyyW)
                If (Delimoe \ 10) - ProizvedeniePervoe * 10 = OstatokPervyy Then
                    OstatokVtoroy = DeShifrovka(OstatokVtoroyW)
                    If OstatokPervyy * 10 + (Delimoe Mod 10) - ProizvedenieVtoroe * 10 = OstatokVtoroy Then
                        OstatokVtoroy = DeShifrovka(OstatokVtoroyW)
                        '======= Решение найдено ==========
                        For k = 1 To 10
                          Cells(k, 16).Value = DeShifrovka(Podstanovka(k))
                        Next k
                        For k = 1 To 6
                            For l = 1 To 8
                                If Cells(k, l).Value <> "" Then
                                    Range("A11:H16").Cells(k, l).Value = DeShifrovka(Cells(k, l).Value)
                                End If
                            Next l
                        Next k
                        Exit Sub
                        '==================================
                    End If
                End If
            End If
        End If
    End If
End If
' <<-----------------------------------------------------------------------------<<
                                                                            End Select
                                                                        Next j
                                                                    End Select
                                                                Next i
                                                            End Select
                                                        Next h
                                                    End Select
                                                Next g
                                            End Select
                                        Next f
                                    End Select
                                Next e
                            End Select
                        Next d
                    End If
                Next c
            End If
        Next b
    Next a
    MsgBox ("Решение не найдено")
End Sub
 
Function DeShifrovka(Simvol As String) As Long
    Dim i, j, Bukva As String, Chislo, Dlina
    Chislo = 0
    Dlina = Len(Simvol)
    For i = 1 To Dlina
        Bukva = Mid(Simvol, Dlina - i + 1, 1)
        For j = 1 To 10
            If Bukva = Podstanovka(j) Then Chislo = Chislo + Reshenie(j) * 10 ^ (i - 1)
        Next j
    Next i
    DeShifrovka = Chislo
End Function
Вложения
Тип файла: zip Ариф_ребус_01.zip (16.7 Кб, 9 просмотров)
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
18.12.2011, 17:02
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от ToxabullY
Так не обязательно, чтобы программа решала именно этот ребус. Она должна решать подобные.
Эта программа вроде как решает подобные.
Медленно, конечно.
На листе можно расположить несколько ребусов, между которыми необходимы просветы хотя бы в 4 столбца для вывода результата.
Выбирать ребус указанием (выделением) любого символа в нем.
Запуск по [Alt+F8].
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
Option Explicit
Dim g(9) As String * 1, h%(9)
 
Sub Set_G(a())
If (Not a) = -1 Then Exit Sub
Dim I As Integer, J As Integer
For I = 0 To UBound(a)
  For J = 0 To 9
    If g(J) = a(I) Then a(I) = J: Exit For
    If g(J) = vbNullChar Then g(J) = a(I): a(I) = J: Exit For
  Next J
Next I
End Sub
 
Function Get_L(a) As Long
Dim I As Integer
On Error Resume Next
For I = 0 To UBound(a)
  If Err Then Err.Clear: Exit Function
  Get_L = Get_L * 10 + h(a(I))
Next I
End Function
 
Sub main()
Dim rn As Range
Set rn = ActiveCell.CurrentRegion 'Выделенной д.б. ячейка,принадлежащщая ребусу!!!
Dim rw%, cl%, d%, e%, f%, cr%
Dim a() 'делимое
Dim b() 'делитель
Dim c() 'частное
Dim uu(), u() 'уменьшаемое
Dim vv(), v() 'вычитаемое
Dim rr(), r() 'разность
 
For cr = rn.Columns.Count To 2 Step -1
  d = d - (rn(1, cr) <> "")
  d = d - (rn(2, cr) <> "")
  If d >= cr Then Exit For
Next cr
ReDim a(cr - 2)
For d = 1 To cr - 1
  a(d - 1) = rn(1, d)
Next d
For d = cr To rn.Columns.Count
  If rn(1, d) <> "" Then ReDim Preserve b(d - cr): b(d - cr) = rn(1, d)
  If rn(2, d) <> "" Then ReDim Preserve c(d - cr): c(d - cr) = rn(2, d)
Next d
Erase g: Set_G a: Set_G b: Set_G c
Range(rn(1, rn.Columns.Count + 2), rn(10, rn.Columns.Count + 3)).ClearContents
ReDim u(UBound(c)), v(UBound(c)), r(UBound(c))
For rw = 2 To rn.Rows.Count Step 2
  Erase uu, vv, rr
  For cl = 1 To cr - 1
    If rn(rw, cl) <> "" Then
      If (Not vv) = -1 Then
        ReDim vv(0)
      Else
        ReDim Preserve vv(UBound(vv) + 1)
      End If
      vv(UBound(vv)) = rn(rw, cl)
    ElseIf (Not vv) <> -1 Then
      Exit For
    End If
    If rn(rw - 1, cl) <> "" Then
      If (Not uu) = -1 Then
        ReDim uu(0)
      Else
        ReDim Preserve uu(UBound(uu) + 1)
      End If
      uu(UBound(uu)) = rn(rw - 1, cl)
    End If
    If rn(rw + 1, cl) <> "" Then
      If (Not rr) = -1 Then
        ReDim rr(0)
      Else
        ReDim Preserve rr(UBound(rr) + 1)
      End If
      rr(UBound(rr)) = rn(rw + 1, cl)
    End If
  Next cl
: Set_G vv: Set_G uu: Set_G rr
  v(UBound(c) - cr + cl) = vv
  u(UBound(c) - cr + cl) = uu
  r(UBound(c) - cr + cl) = rr
Next rw
For d = 0 To 9: h(d) = d: Next d
1:
  If Get_L(b) * Get_L(c) + Get_L(r(UBound(c))) = Get_L(a) Then
    For d = 0 To UBound(c)
      If h(c(d)) * Get_L(b) <> Get_L(v(d)) Then Exit For
      If Get_L(u(d)) - Get_L(v(d)) <> Get_L(r(d)) Then Exit For
    Next d
    If d > UBound(c) Then
      For d = 0 To 9
        If g(d) = Chr$(0) Then Exit For
        rn(d + 1, rn.Columns.Count + 2) = g(d)
        rn(d + 1, rn.Columns.Count + 3) = h(d)
      Next d
      MsgBox "Решение найдено!"
      Exit Sub
    End If
  End If
  For d = 8 To 0 Step -1
    If h(d) < h(d + 1) Then
      For e = 9 To d + 1 Step -1
        If h(d) < h(e) Then Exit For
      Next e
      f = h(e): h(e) = h(d): h(d) = f
      For e = 1 To (9 - d) \ 2
        f = h(d + e): h(d + e) = h(10 - e): h(10 - e) = f
      Next e
      GoTo 1
    End If
  Next d
  MsgBox "Решение не найдено!"
End Sub
ЗЫ: Принимаются ребусы и с остатком от деления...
Миниатюры
Решить ребус  
Вложения
Тип файла: zip RebusXLS.zip (24.1 Кб, 13 просмотров)
3
 Аватар для ToxabullY
10 / 13 / 0
Регистрация: 17.05.2011
Сообщений: 94
19.12.2011, 17:26  [ТС]
Спасибо вам всем огромное!!! я вам очень сильно благодарен! вы меня выручили! здоровья вам всех и успехов!!!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.12.2011, 17:26
Помогаю со студенческими работами здесь

Решить ребус
USSR+USA=РЕАСЕ Заранее говорю огромное спасибо )

Решить ребус
помогите решить ребус АВС =АВ + ВС + СА

Решить ребус
программа должна вывести окно,закрашенное любым цветом,вверху должно быть написано &quot;ребус&quot;.а внизу-&quot;выполнил ученик 10 б...

Решить ребус
скажите пожалуйста,что нужно делать в третьем задании

Решить ребус
Решить ребус. Причем каждой букве соответствует определенное число! VOLVO - FIAT _________ MOTOR


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru