Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2024-02-15 | 23 |
5.00
из
|
Заказать работу |
|
|
Задача 5. Найти среднее арифметическое четных чисел из N чисел, вводимых с клавиатуры. Решение. Среднее арифметическое – это значение суммы чисел, деленной на их количество. Поэтому для решения задачи потребуются переменные для накопления суммы и количества четных чисел. Пусть это будут S и k, для простоты – целого типа. Кроме того, в программе нужно ввести N или задать его с помощью присваивания. Для проверки на четность можно использовать функцию Mod, дающую целочисленный остаток от деления ее левого операнда на правый: результат операции x Mod y равен целому числу - остатку от деления x на y; так он будет 0, если x делится на y. Если x или y не целые числа, то они предварительно будут округлены до целого. Основу алгоритма составит циклическая процедура: ввести число, проверить: если оно четное, то добавить его к сумме S и увеличить счетчик четных чисел k на 1. Эти операторы нужно повторить N раз. На выходе из цикла сумма четных чисел и их количество будут посчитаны, останется только разделить S на k и запомнить результат. Для хранения результата возьмем переменную r, ее тип – Single –действительное число, т.к. искомое среднее – результат деления – не всегда будет целым числом:
Sub Среднее()
Dim S As Integer, r As Single, k As Integer, a As Integer
N = InputBox("Введите N – количество чисел")
S = 0
k = 0
For i = 1 To N
a = InputBox("Введите число")
If a Mod 2 = 0 Then
S = S + a
k = k + 1
End If
Next r = S / k
MsgBox (r)
End Sub
Обратите внимание, что переменные S и k предварительно обнуляются («чистятся»), причем до начала цикла. Чистку необходимо делать, т.к. при переводе программы на машинный язык под переменные отводится память, в ко- торой может что-нибудь уже находиться, какая-либо старая информация. Если убрать оператор S = 0, то в последующем присваивании S = S + a при вычислении правой части к значению a будет добавлено неизвестное значение S и результат будет неверный. Типичная ошибка, когда операции обнуления помещают в тело цикла, после заголовка:
|
For i = 1 To N S = 0 ‘неверно!
k = 0 ‘неверно!
a = InputBox("Введите число")
If a Mod 2 = 0 Then
S = S + a
k = k + 1
End If
Next
Тогда чистка происходит на каждом шаге исполнения цикла, поэтому после завершения цикла в S окажется лишь последнее введенное четное a, и k будет равен 1.
Задача 6. Посчитать произведение чисел, вводимых с клавиатуры до тех пор, пока не встретится 0.
Решение. Здесь заранее не известно, сколько чисел будет введено, поэтому лучше воспользоваться циклом While:
Sub Произведение()
Dim a As Integer, P As Integer
a = InputBox("Введите ненулевое число")
P = 1
While a <> 0
P = P * a
a = InputBox("Введите число")
Wend
MsgBox (P)
End Sub
Обратите внимание, что «чистка» переменной Р заключается в присвоении ей значения 1, т.к. Р участвует в произведении P = P *a и обнуление Р при- вело бы к нулевому результату всей программы. Исполнение цикла продолжается до тех пор, пока не введен 0 в переменную а. В первой строке мы потребовали, чтобы вначале было введено ненулевое число. А что, если все-таки пользователь программы ввел 0? Тогда цикл не проработает ни разу и результат будет Р=1. Такой же результат будет, если ввели 1, а затем 0. Как различить эти случаи? «Защититься» от первого нуля можно, поставив, например, «оберегающий» оператор Until c проверкой на ноль:
Sub Произведение ()
Dim a As Integer, P As Integer
Do
a = InputBox("Введите ненулевое число")
Loop Until a <>0 P = 1
While a <> 0
P = P * a
a = InputBox("Введите число")
Wend
MsgBox (P)
End Sub
Здесь первый оператор цикла не позволит продолжить программу, если вводятся нули: условие выхода из цикла a<>0.
|
|
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!