ввести А
если А < 4 тогда нет ответа
иначе
Б = А / 2 (деление нацело)
если А парное
С = Б + 2
иначе
С = Б + 3
вывести С
Задачка
Выдать натуральное число, сумма предшествующих которому будет превышать число, заданное при вводе.
Код:
Код:
Dim N As Long ' Задаваемое число
Dim X As Long ' Ответ
Dim i As Long ' Думаю, величины переменных типа Long будет достаточно
Dim SUM As Long
Private Sub Command1_Click() ' Я решил сделать так, чтобы прога запускалась при нажатии кнопки, но можно, конечно, и иначе, напрмер, через Form_Load
N = InputBox ("Введите натуральное число:") ' Здесь появляется окошко, в которое нужно ввести число
If N < 4 or IsNumeric(N) = False Then MsgBox "Нет решений": Exit Sub ' Если введёное число меньше 4 или введено чёрт знает что :D , то прога завершает свою работу (это следует из логики вещей ;) )
SUM = 0 ' обнуление переменной (необязательная строка, если переменная SUM не используется в других процедурах)
For i = 1 To N ' вместо N можно было конечно написать и максимальное значение типа Long равное 2 147 483 647 :p
SUM = SUM + i ' Здесь происходит простое увеличение суммы на величину i, значение которой, каждый раз увеличивается на один
If SUM > N Then X = i + 1: MsgBox "Это число " & X: Exit Sub ' Дословно: если сумма нат. чисел больше введёного числа, то искомое число будет на один больше (по условию)
Next i
End Sub
Dim X As Long ' Ответ
Dim i As Long ' Думаю, величины переменных типа Long будет достаточно
Dim SUM As Long
Private Sub Command1_Click() ' Я решил сделать так, чтобы прога запускалась при нажатии кнопки, но можно, конечно, и иначе, напрмер, через Form_Load
N = InputBox ("Введите натуральное число:") ' Здесь появляется окошко, в которое нужно ввести число
If N < 4 or IsNumeric(N) = False Then MsgBox "Нет решений": Exit Sub ' Если введёное число меньше 4 или введено чёрт знает что :D , то прога завершает свою работу (это следует из логики вещей ;) )
SUM = 0 ' обнуление переменной (необязательная строка, если переменная SUM не используется в других процедурах)
For i = 1 To N ' вместо N можно было конечно написать и максимальное значение типа Long равное 2 147 483 647 :p
SUM = SUM + i ' Здесь происходит простое увеличение суммы на величину i, значение которой, каждый раз увеличивается на один
If SUM > N Then X = i + 1: MsgBox "Это число " & X: Exit Sub ' Дословно: если сумма нат. чисел больше введёного числа, то искомое число будет на один больше (по условию)
Next i
End Sub
Я проверял, вроде всё правильно работает! :cool:
Прошу прощения за мой неправильній ответ. Я грешнім делом подумал что сума только двух предидущих за ответом должна біть больше. Чтото на меня затмение нашло.
Как он действует и подсчитывает значение I и x
Откомментировал тамже