Между цифрами числа вставить 6 операций умножения или сложения - VB

Узнай цену своей работы

Формулировка задачи:

Дано 7-значное натуральное рандомное число. Надо между цифрами этого числа вставить 6 операций умножения или сложения так, чтобы при выполнении этих операций над цифрами получалось максимально возможное число. Важное условие: полагается что умножение и сложение одного приоритета. Вынести на форму само число, число со вставленными знаками операций и максимальный результат этих операций. Меня конечно заинтересовала эта задача с другим условием Приоритет умножения должен быть выше сложения. Но это оказалось гораздо сложней. И я привожу решение в той формулировке, в которой эта задача дана. И всё-таки. Так ли это сложно? Всего 6 операций. Число умножений легко сосчитать. Единственная проблема: куда девать результат?? Я сейчас пытаюсь сделать Стек для вычисления арифметического выражения. Путей много, а результата нет ....
Листинг программы
  1. Option Explicit
  2. Dim i%, i1%, i2%, i3%, i4%, i5%, i6%
  3. Dim n&, o&, max&
  4. Dim s13 As String, sN As String, tN As String
  5. Dim a(1 To 7) As String
  6. Dim b(1 To 7) As Integer
  7. Private Sub cmdD_Click()
  8. Randomize
  9. n = 9000000 * Rnd + 1000000
  10. sN = LTrim(Str(n))
  11. For i = 1 To 7
  12. a(i) = Mid(sN, i, 1)
  13. b(i) = Val(a(i))
  14. Next i
  15. s13 = a(1)
  16. For i = 2 To 7
  17. s13 = s13 + " " + a(i)
  18. Next i
  19. max = 0
  20. For i1 = 0 To 1
  21. For i2 = 0 To 1
  22. For i3 = 0 To 1
  23. For i4 = 0 To 1
  24. For i5 = 0 To 1
  25. For i6 = 0 To 1
  26. o = b(1)
  27. Mid(s13, 2, 1) = IIf(i1 = 0, "+", "*")
  28. Mid(s13, 4, 1) = IIf(i2 = 0, "+", "*")
  29. Mid(s13, 6, 1) = IIf(i3 = 0, "+", "*")
  30. Mid(s13, 8, 1) = IIf(i4 = 0, "+", "*")
  31. Mid(s13, 10, 1) = IIf(i5 = 0, "+", "*")
  32. Mid(s13, 12, 1) = IIf(i6 = 0, "+", "*")
  33. o = IIf(i1 = 0, o + b(2), o * b(2))
  34. o = IIf(i2 = 0, o + b(3), o * b(3))
  35. o = IIf(i3 = 0, o + b(4), o * b(4))
  36. o = IIf(i4 = 0, o + b(5), o * b(5))
  37. o = IIf(i5 = 0, o + b(6), o * b(6))
  38. o = IIf(i6 = 0, o + b(7), o * b(7))
  39. If o > max Then
  40. max = o
  41. tN = s13
  42. End If
  43. Next i6, i5, i4, i3, i2, i1
  44. Print sN
  45. Print tN
  46. Print "Max="; max
  47. End Sub

Решение задачи: «Между цифрами числа вставить 6 операций умножения или сложения»

textual
Листинг программы
  1. Private Sub GetOp()
  2.     Dim num     As Long
  3.     Dim res     As String
  4.     Dim value   As Long
  5.    
  6.     Randomize
  7.    
  8.     value = Int(Rnd * 9) + 1
  9.     For num = 0 To 5
  10.         value = value * 10 + Int(10 * Rnd)
  11.     Next
  12.  
  13.     Do
  14.         num = value Mod 10
  15.         value = value \ 10
  16.         If num < 2 Then res = "+" & num & res Else res = "*" & num & res
  17.     Loop While value > 9
  18.    
  19.     Debug.Print IIf(value > 2, value & "*" & Mid$(res, 2), value & "+" & Mid$(res, 2))
  20. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы