VBA Построить первые n натуральных чисел, делителями которых являются только числа 2, 3, 5

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

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

Начал делать программу на VBA, но никак не могу понять как сделать правильное условие, постоянно выводит не то что мне нужно. Что мне нужно исправить? Ввод массива осуществляется в ручную. Sub Кнопка1_Щелчок() Dim r, i, ch As Integer dl = 30 r = InputBox("Размер массива") - 1 Dim MyArr() As Integer ReDim MyArr(r) Cells(1, 1) = "Начальный массив: " For i = 0 To r MyArr(i) = InputBox("Введите" & " " & i + 1 & " " & "элемент массива") Cells(1, i + 2) = MyArr(i) Next For i = 0 To r If MyArr(i) >= 30 Then ch = MyArr(i) Mod dl End If Next Cells(2, 1) = "Числа, делителями которых являются: 2,3,5" Cells(2, 2) = ch End Sub

Решение задачи: «VBA Построить первые n натуральных чисел, делителями которых являются только числа 2, 3, 5»

textual
Листинг программы
  1. Option Explicit
  2. Dim a, i, j, x, y, w$, s$, кратное
  3.  
  4. Sub Построить_первые_n_натуральных_чисел_делителями_которых_являются_только_числа_2_3_5()
  5.      Ввод
  6.      Решение
  7.      Вывод
  8. End Sub
  9.  
  10. Private Sub Ввод()
  11.     s$ = "": w$ = ""
  12.     Do
  13.         i = InputBox("Введите размер массива ", , 10)
  14.         If i = "" Then If MsgBox("Хотите выйти ?", 68) = vbYes Then Exit Sub
  15.         If IsNumeric(i) Then Exit Do
  16.     Loop
  17.     ReDim a(1 To i): Randomize Timer
  18.     For j = 1 To UBound(a)
  19.         Do
  20.             кратное = Array(30, 60, 90, 120, 150, 180)(Fix(Rnd * 6))
  21.             x = Fix(Rnd * 2) + 1: y = Fix(Rnd * 1000) 'Элементы по умолчанию
  22.            i = InputBox("Введите " & j & "-й индекс массива", , Choose(x, кратное, y))
  23.             If i = "" Then If MsgBox("Хотите выйти ?", 68) = vbYes Then Exit Sub
  24.             If IsNumeric(i) Then Exit Do
  25.         Loop: a(j) = i
  26.     Next
  27. End Sub
  28.  
  29. Private Sub Решение()
  30.     Const z = ", "
  31.     If Not IsArray(a) Then Exit Sub
  32.     For i = 1 To UBound(a)
  33.         s = s & z & a(i)
  34.         If a(i) Mod 30 = 0 Then w = w & z & a(i)
  35.     Next
  36.     s = Mid$(s, 2): w = Mid$(w, 2)
  37. End Sub
  38.  
  39. Private Sub Вывод()
  40.     If Len(s) = 0 Then Exit Sub
  41.     x = "Начальный массив": y = "Конечный массив"
  42.     Cells(1, 1) = x
  43.     Cells(1, 2) = s
  44.     Cells(2, 1) = y
  45.     Cells(2, 2) = w
  46.     MsgBox x & vbLf & s & vbLf & y & vbLf & w
  47. End Sub

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


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

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

11   голосов , оценка 4.273 из 5

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

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

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