В магическом квадрате 3х3 расставить 9 степеней - VB
Формулировка задачи:
в магическом квадрате 3х3 расставить 9 степеней чиста 2 таким образом, чтобы произведение чисел, стоящих в каждой строке, столбце и на диагонали были равны.
Решение задачи: «В магическом квадрате 3х3 расставить 9 степеней»
textual
Листинг программы
Option Explicit Dim F As Boolean, SSS As String Private Sub Command1_Click() F = false SSS = "" Call WeTrastInVB("123456789") MsgBox IIf(F, SSS, "Таких магических квадратов не существует!") End Sub Private Function WeTrastInVB(S As String, Optional SS As String = "") As Boolean Dim i As Integer If Len(S) = 1 Then If TryMagicSquare(SS & S) Then F = True Else For i = 1 To Len(S) WeTrastInVB Left$(S, i - 1) & Mid$(S, i + 1), SS & Mid$(S, i, 1) Next End If End Function Private Function TryMagicSquare(ByVal S As String) As Boolean Dim i As Integer, j As Integer, k As Integer Const n As Integer = 3 'n = UBound(A, 1) Dim A(1 To n, 1 To n) As Long, P(1 To 4) As Long For i = 1 To n For j = 1 To n k = k + 1 A(i, j) = 2 ^ CInt(Mid(S, k, 1)) Next j Next i P(1) = 1: P(2) = 1 For i = 1 To n P(1) = P(1) * A(i, i) 'произведение элементов главной диагонали P(2) = P(2) * A(i, n - i + 1) 'произведение элементов побочной диагонали Next i If P(1) <> P(2) Then Exit Function For i = 1 To n P(3) = 1: P(4) = 1 For j = 1 To n P(3) = P(3) * A(i, j) 'произведение элементов i-ой строки P(4) = P(4) * A(j, i) 'произведение элементов i-го столбца Next j If (P(1) <> P(3)) Or (P(1) <> P(4)) Then Exit Function Next i SSS = SSS & strMagicSquare(A) & vbCrLf TryMagicSquare = True End Function Private Function strMagicSquare(ByRef A() As Long) As String Dim i As Integer, j As Integer, S As String Dim n As Integer: n = UBound(A, 1) For i = 1 To n For j = 1 To n S = S & A(i, j) & vbTab Next j S = S & vbCrLf Next i strMagicSquare = S End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д