Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69

Верно ли, что по четным числам выпало больше осадков, чем по нечетным?

03.06.2011, 17:18. Показов 4124. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Данные о количестве осадков, выпавших на каждый день февраля. Верно ли, что по четным числам выпало больше осадков, чем по нечетным? Использовать только один оператор цикла.
Условие:
osadki – случайные числа, осадки на каждый день февраля;
osadki - положительное;
нужно найти: верно, что chet>nechet, или нет

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub zadacha2()
Dim chet, nechet, i, osadki
chet = 0 'задаем начальное значение суммы осадков по четным дням
nechet = 0 'задаем начальное значение суммы осадков по нечетным дням
i = 1 'задаем начальное значение счетчика дней
While i <= 28 'пока не закончился месяц (20 дней)
osadki = Rnd() * 30 'присвоить осадкам случайное число от 0 до 30
If i Mod 2 = 0 Then 'если номер текущего дня четный, то
nechet = nechet + osadki 'добавить эти осадки в сумму к нечетным дням
Else 'иначе
chet = chet + osadki 'добавить эти осадки в сумму к четным дням
End If 'конец условного оператора
i = i + 1 'увеличить счетчик дней на 1
Wend 'конец цикла
MsgBox ("chet = " & chet & " nechet = " & nechet) 'вывод суммы осадков по четным и по нечетным дням
MsgBox (chet > nechet) 'вывод результата логического сравнения, что сумма по четным дням была больше суммы по нечетным дням
End Sub
Используя while и if - все работает, но по условию нужно использовать только один оператор цикла...
Помогите модифицировать решение, чтобы оно соответствовало условию.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.06.2011, 17:18
Ответы с готовыми решениями:

По данным о количестве осадков за каждый день марта узнать - верно ли, что осадков не было 10 дней
Здравствуйте, помогите решить задачу: Известны данные о количестве осадков, выпавших за каждый день марта. Верно ли, что осадков не было 10...

Известны данные о количестве осадков. Верно ли, что по четным числам выпало больше осадков, чем по нечетным
Известны данные о количестве осадков, выпавших за каждый день февраля. Верно ли, что по четным числам выпало больше осадков, чем по...

Массив: Определить количество дней, в которые выпало осадков больше, чем в среднем за месяц.
Пожалуйста, помогите решить задачу!!!:cry: Линейный массив. Заполнение массива с помощью датчика случайных чисел. В массиве хранится...

20
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
03.06.2011, 17:45
Если ты заполняешь данные об осадках и сразу проверяешь на чет/нечет - невозможно.
Если сперва (первым циклом) заполнить значения - то
PureBasic
1
2
3
4
5
6
i=1
while<29 'ошибся маленько
nchet=nchet+O[i]
chet=chet+O[i+1]
i=i+2
wend
дальше сравнивай
1
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
03.06.2011, 18:04
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

подправил.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub zadacha2()
Dim chet, nechet, i, osadki
chet = 0 'задаем начальное значение суммы осадков по четным дням
nechet = 0 'задаем начальное значение суммы осадков по нечетным дням
i = 1 'задаем начальное значение счетчика дней
Randomize
While i <= 28 'пока не закончился месяц (20 дней)
osadki = Rnd() * 30 'присвоить осадкам случайное число от 0 до 30
If i Mod 2 = 0 Then 'если номер текущего дня четный, то
chet = chet + osadki 'добавить эти осадки в сумму к четным дням
Else 'иначе
nechet = nechet + osadki 'добавить эти осадки в сумму к нечетным дням
End If 'конец условного оператора
i = i + 1 'увеличить счетчик дней на 1
Wend 'конец цикла
MsgBox ("chet = " & chet & " nechet = " & nechet) 'вывод суммы осадков по четным и по нечетным дням
If chet > nechet Then
MsgBox "Осадков выпало больше четным числам" 'вывод результата логического сравнения, что сумма по четным дням была больше суммы по нечетным дням
Else
MsgBox "Осадков выпало больше нечетным числам"
End If
If chet = nechet Then MsgBox "Осадков выпало поровну по четным и нечетным"
End Sub
1
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
04.06.2011, 12:14  [ТС]
благодарю, все работает)

Добавлено через 18 часов 3 минуты

Добавлено через 1 минуту
как можно реализовать ввод данных кроме рандома? с клавиатуры?
как можно это можно сделать...
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
04.06.2011, 13:06
я же вроде тебе в личку вчера отписывал?
можно из ячеек листа брать
PureBasic
1
2
3
4
5
nch=0: ch=0
for i=1 to 27 step 2
 nch=nch+range("a1").cells(1,i).value
 ch=ch+range("a1").cells(1,i+1).value
next
1
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
04.06.2011, 13:19
для ввода данных с клавиатуры заменить строку osadki = Rnd() * 30 на osadki = inputbox("Введите величину осадков"). Можно считывать данные с листа Excel. Для этого osadki = Rnd() * 30 заменить на строку osadki = cells(i,1). Предварительно в первый столбец необходимо данные занести вручную.
0
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
04.06.2011, 14:05  [ТС]
Цитата Сообщение от 19vitek Посмотреть сообщение
для ввода данных с клавиатуры заменить строку osadki = Rnd() * 30 на osadki = inputbox("Введите величину осадков").
Бесконечно просит ввести число)
0
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
04.06.2011, 14:11
у меня не просит.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub zadacha2()
Dim chet, nechet, i, osadki
chet = 0 'задаем начальное значение суммы осадков по четным дням
nechet = 0 'задаем начальное значение суммы осадков по нечетным дням
i = 1 'задаем начальное значение счетчика дней
Randomize
While i <= 5 'пока не закончился месяц (20 дней)
 osadki = InputBox("Введите величину осадков")
'Rnd() * 30 'присвоить осадкам случайное число от 0 до 30
If i Mod 2 = 0 Then 'если номер текущего дня четный, то
chet = chet + osadki 'добавить эти осадки в сумму к четным дням
Else 'иначе
nechet = nechet + osadki 'добавить эти осадки в сумму к нечетным дням
End If 'конец условного оператора
i = i + 1 'увеличить счетчик дней на 1
Wend 'конец цикла
MsgBox ("chet = " & chet & " nechet = " & nechet) 'вывод суммы осадков по четным и по нечетным дням
If chet > nechet Then
MsgBox "Осадков выпало больше четным числам" 'вывод результата логического сравнения, что сумма по четным дням была больше суммы по нечетным дням
Else
MsgBox "Осадков выпало больше нечетным числам"
End If
If chet = nechet Then MsgBox "Осадков выпало поровну по четным и нечетным"
End Sub
Добавлено через 1 минуту
работает и в word.
1
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
04.06.2011, 16:22  [ТС]
А можно как то упростить, чтобы не забывать 28 чисел с клавиатуры...например хранить в массиве, только как к нему обратиться?
0
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
04.06.2011, 16:52
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

можно прочитать из массива.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub zadacha2()
Dim chet, nechet, i
chet = 0 'задаем начальное значение суммы осадков по четным дням
nechet = 0 'задаем начальное значение суммы осадков по нечетным дням
i = 1 'задаем начальное значение счетчика дней
osadki = Array(10, 4, 6, 8, 3, 5, 7, 9, 15, 7, 23)
While i <= 10 'пока не закончился месяц (20 дней)
'osadki = InputBox("Введите величину осадков")
'Rnd() * 30 'присвоить осадкам случайное число от 0 до 30
If i Mod 2 = 0 Then 'если номер текущего дня четный, то
chet = chet + osadki(i) 'добавить эти осадки в сумму к четным дням
Else 'иначе
nechet = nechet + osadki(i) 'добавить эти осадки в сумму к нечетным дням
End If 'конец условного оператора
i = i + 1 'увеличить счетчик дней на 1
Wend 'конец цикла
MsgBox ("chet = " & chet & " nechet = " & nechet) 'вывод суммы осадков по четным и по нечетным дням
If chet > nechet Then
MsgBox "Осадков выпало больше четным числам" 'вывод результата логического сравнения, что сумма по четным дням была больше суммы по нечетным дням
Else
MsgBox "Осадков выпало больше нечетным числам"
End If
If chet = nechet Then MsgBox "Осадков выпало поровну по четным и нечетным"
End Sub
1
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
17.06.2011, 15:41  [ТС]
После проверки задачу забраковали, сославшись на то, что цикл while...wend является устаревшим.
И сказали разбить задачу на две под задачи...я так понимаю нахождение четности/нечетности и собственно сравнение. Заменив while на for...next возник вопрос, как описать нахождение четности/нечетности в отдельной процедуре, которая вызывается далее в программе.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub zadacha2()
Dim chet, nechet, i, osadki 'объявление переменных
chet = 0 'задаем начальное значение суммы осадков по четным дням
nechet = 0 'задаем начальное значение суммы осадков по нечетным дням
For i = 1 To 5 'пока не закончился месяц (28 дней)
osadki = InputBox("Введите величину осадков") 'ввод значение с клавиатуры
If i Mod 2 = 0 Then 'если номер текущего дня четный, то
chet = chet + osadki 'добавить эти осадки в сумму к четным дням
Else 'иначе
nechet = nechet + osadki 'добавить эти осадки в сумму к нечетным дням
End If 'конец условного оператора
Next i
MsgBox ("chet = " & chet & " nechet = " & nechet) 'вывод суммы осадков по четным и по нечетным дням
If chet > nechet Then
MsgBox "Осадков выпало больше четным числам" 'вывод результата логического сравнения, что сумма по четным дням была больше суммы по нечетным дням
Else 'иначе
MsgBox "Осадков выпало больше нечетным числам" 'вывод результата логического сравнения, что сумма по четным дням была больше суммы по четным дням
End If 'конец условного оператора
End Sub
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
17.06.2011, 16:25
Блин, зачем проверять на четность каждый день месяца?
Выполни цикл
Visual Basic
1
2
3
4
for i=1 to 27 step 2 // для февраля
nech=nec+A(i)
chet=chet+A(i+1)
next
0
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
17.06.2011, 16:40  [ТС]
Visual Basic
1
2
3
4
5
For i = 1 To 27 Step 2
osadki = InputBox("Введите величину осадков") 'ввод значение с клавиатуры
nechet = nechet + osadki(i)
chet = chet + osadki(i + 1)
Next
ругается на строчку: nechet = nechet + osadki(i)
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
17.06.2011, 16:46
ты несовсем понял. предложенный мною цикл работает с уже готовым массивом osadki.
если условие "совсем один цикл на ввод данных и обработку тогда действовать нужно немного иначе:
1) ввести 28 значений на лист (в строку, начиная с A1)
2) выполнить код
Visual Basic
1
2
3
4
 for i=1 to 27 step 2
  nech=nech+range("a1").offset(1,i).value
 chet=chet+range("a1").offset(1,i+1).value
next
по другому с ОДНИМ только циклом сделать нельзя
0
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
17.06.2011, 16:55  [ТС]
Спасибо, теперь все понятно, увы в Word лист мне не доступен, остановлюсь на прежнем варианте...)
Еще один вопрос.
Задача: Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. Определить, в какой день он пробежит больше 20 км.
Реализация:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub zadacha1()
Dim probeg, day
day = 1 'задаем начальное значение дня
probeg = 10 'задаем начальное значение пробега
Do
day = day + 1 'увеличиваем день на 1
probeg = probeg * 1.1 'и увеличиваем пробег на 10%
Loop While probeg <= 20
MsgBox ("probeg = " & probeg & " day = " & day) 'выводим пробег и день
End Sub
Вопрос: 10% = 0.1(но так не работает), с 1.1 все работает и ответ вроде верен, почему за 10% принимается 1.1?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
17.06.2011, 17:01
1) Про Word я в шоке - причем такая задача и текстовый процессор?
2) пробег=пробег+пробег*0,1
пробег=пробег*(1+0,1)
пробег=пробег*1,1
Вот тут уже класс 6 средней школы
1
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
17.06.2011, 17:17  [ТС]
Большое спасибо =)))
а по поводу Word'a...думаю что в Excel было куда удобней
0
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
23.06.2011, 08:01  [ТС]
Задачи снова забраковали, сказав обосновать использование цикла, указать цель цикла, обосновать переменную цикла и откуда она взялась.
Мне не совсем ясно чего от меня хотят Кто нибудь может объяснить подробнее о чем речь (для тупых) ?
Можно в личку.

Добавлено через 16 часов 54 минуты
Параметр цикла — переменная, управляющая выполнением цикла. Параметр цикла изменяет свое значение при каждом проходе тела цикла.
В моем случае такие переменные day и probeg(если не ошибаюсь), но как это обосновать?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
23.06.2011, 10:45
не, у тебя переменная цикла только пробег - только ее значение контролируется в цикле do...while
day непосредственно к циклу отношения не имеет - она участвует только в рассчетах.
ps что за учебное заведение, если не секрет?
0
 Аватар для БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
23.06.2011, 12:32  [ТС]
Не секрет - Гос. Академия культуры и искусств, специальность "Документоведение и документационное обеспечение"
Как грамотно обосновать probeg - переменная цикла и каковы ее цели?
В моем понимании цель цикла - перебор и выполнения расчетов до того момента пока условие не станет ложно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2011, 12:32
Помогаю со студенческими работами здесь

Известны данные о количестве осадков, выпавших за каждый день февраля. Найти общее число осадков, выпавших по четным числам месяца
Известны данные о количестве осадков, выпавших за каждый день февраля. Найти общее число осадков, выпавших по четным числам месяца. Вот...

Известны данные о количестве осадков, выпавших за каждый день февраля. Найти общее число осадков, выпавших по четным числам месяца
11.57. Известны данные о количестве осадков, выпавших за каждый день февраля. Найти общее число осадков, выпавших по четным числам месяца. ...

Известны данные о количестве осадков, выпавших за каждый день февраля. Найти общее число осадков, выпавших по четным числам месяца
Известны данные о количестве осадков, выпавших за каждый день февраля. Найти общее число осадков, выпавших по четным числам месяца.

Разделить стек на два по четным и нечетным числам
Доброго времени суток. Моя программа основана на реализации стека. Я ввожу целочисленные значения в Stack, затем помещаю чётные числа в...

Найти общее число осадков, выпавших по четным числам месяца
Известны данные о количестве осадков, выпавших за каждый день февраля. Найти общее число осадков, выпавших по четным числам месяца. (задача...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru