Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
2024-02-15 | 70 |
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!