Автор ВИ задал вопрос в разделе Другие языки и технологии
Помогите написать программу на Visual Basis и получил лучший ответ
Ответ от Алексей Смирнов[гуру]
Ещё вариант для VB5/6. Тут элементы управления на форме не нужны, просто поместите следующий код в модуль формы:
' СОБЫТИЕ: загрузка формы
Private Sub Form_Load()
' описание переменных
Dim strInput As String ' строка для ввода
Dim intItem As Integer ' счётчик символов
Dim strRes As String ' результата
Dim intNum As Integer ' цифра
' цикл запросов чисел
Do While True
' запрос чисел
strInput = Trim(InputBox("Введите число: "))
' выход ищ цикла, если строка пуста
If Len(strInput) = 0 Then Exit Do
' определение результата
strRes = ""
For intItem = 1 To Len(strInput)
' определение цифры
intNum = Val(Mid(strInput, intItem, 1))
' замена цифры
intNum = IIf(Int(intNum / 2) = (intNum / 2), 1, 2)
' добавление цифры в результат
strRes = strRes & Format(intNum, "0")
Next
' вывод результата на экран
MsgBox "Результат: " & strRes
' конец цикла
Loop
' закрытие формы
Unload Me
End Sub
Алексей Смирнов
Мастер
(2045)
Функция IIF гарантированно поддерживается в VB5/6 и VBA.
Данная функция возвращает одну из двух частей в зависимости от результата вычисления выражения (Выражение. Сочетание математических и логических операторов, констант, функций, имен полей, элементов управления и свойств, в результате обработки которого получается единственное значение. Выражение может выполнять вычисления, обрабатывать текст или проверять данные.).
Синтаксис
IIf(выражение, если_истина, если_ложь)
выражение Обязательный. Выражение, которое требуется вычислить.
если_истина Обязательный. Значение или выражение, возвращаемое, если значением аргумента выражение является Истина.
если_ложь Обязательный. Значение или выражение, возвращаемое, если значением аргумента выражение является Ложь.
Int(intNum/2)=(intNum/2) - условие, проверяет чётность (если делится на 2 без остатка, значит чётное)
тоже самое могу сделать в Алгоритме или Delphi...практики работы с визуалом у меня пока нет)
Эту программу я сам проверил в Visual Basic 6. Она работает.
Сначала делаешь форму с полем для ввода Text1, полем для вывода Text2 и кнопками "Старт" и "Выход".
1) Кнопка "Старт".
Свойство Default ставишь True, чтобы она нажималась при нажатии Enter на клавиатуре.
Вешаешь программу:
Private Sub btnStart_Click()
Dim i As Integer, Length As Integer, N As Long, Ost As Long, A As Integer
Text2.Text = "" ' Text2.Text - пустое поле
N = Text1.Text ' N - введенное число
Length = Len(Text1.Text) ' Length - количество цифр во введенном числе
For i = 1 To Length Step 1 ' Цикл наоборот, от старшего разряда к младшему
Ost = N Mod 10 ' Ost - остаток от деления на 10 в степени, то есть цифра очередного разряда.
If Ost Mod 2 = 0 Then A = 1 Else A = 2 ' A = 1 или 2 для вставки в Text2.Text
Text2.Text = A & Text2.Text
N = (N - Ost) / 10 ' отбрасываем младший разряд N
Next i
End Sub
2) Кнопка "Выход".
Свойство Cancel ставишь True.
Вешаешь программу:
Private Sub btnCancel_Click()
End
End Sub
Спасибо