Найти количество нулей во всех числах последовательности

Задача 0.4
Дана последовательность чисел, заданная пользователем. Найти количество нулей во всех числах последовательности.
В этот раз решил немного отойти от традиций и решить задачу на нескольких языках. А именно: 1) Паскаль; 2) С++; 3) JavaScript; 4) VBScript; 5) VBA.
А сподвигла меня на это просьба одного из читателей, который и попросил помочь в решении этой задачи. Правда, просил он только о VBA, но я решил расширить эту просьбу. И хотя к тому времени, когда я собрался это сделать, для читателя задача уже была неактуальна, я решил таки её решить — вдруг кому-то ещё пригодится.
ПРИМЕЧАНИЕ
Скачать исходные коды всех примеров можно здесь.
Как найти количество нулей в строке
В заголовке, в общем то, отражена суть решения задачи. Нам надо просто подсчитать количество нулей в строке, которую ввёл пользователь.
В большинстве языков программирования с вводом строки не будет никаких сложностей (хотя есть особенности — о вводе данных более подробно расскажу ниже).
Для решения лучше всего создать функцию, которая будет принимать строку, а возвращать количество нулей в этой строке. Далее привожу примеры такой функции на нескольких языках.
Пример на Паскале
//------------------------------------------------------------------- // Вычисляет и возвращает количество нулей в строке st //------------------------------------------------------------------- function GetZerosNum(st : string) : word; var i, n : word; begin n := 0; for i := 1 to Length(st) do if st[i] = '0' then Inc(n); Result := n; end;
Пример на С++
unsigned int GetZerosNum(string st)
Пример на JavaScript
function GetZerosNum(st)
Пример на VBScript и VBA
'-------------------------------------------------------------------- ' Вычисляет и возвращает количество нулей в строке st '-------------------------------------------------------------------- function GetZerosNum(st) n = 0 for i = 1 to Len(st) if Mid(st, i, 1) = "0" then n = n + 1 next GetZerosNum = n end function
Ну вот как-то так. Теперь ещё осталось разобраться с вводом данных. Для всех случаев я решил использовать глобальную переменную str , в которую буду получать строку, введённую пользователем.
В Паскале никаких сложностей с этим нет — просто используйте
Снова и снова убеждаюсь, что Паскаль — это очень крутой и простой язык. А вот в С++ всё будет не так просто. Если вы используете cin , то будете неприятно удивлены тем обстоятельством, что строка будет прочитана только до первого пробела. Поэтому придётся сделать так:

В JavaScript я использовал поле ввода. Как это делается, я рассказал здесь.

В VBScript я использовал диалоговое окно для ввода данных. Подробно об этом я рассказал в книге Как стать программистом.

VBA — это язык, о котором я раньше вообще не рассказывал. Не буду рассказывать и сейчас, потому что это тема отдельного разговора. Скажу только, что для примера я использовал файл Excel, в котором размести кнопку и связал её с макросом, который и вызывает функцию GetZerosNum .
Пользователь вводит данные в ячейку таблицы Excel, а макрос на языке VBA читает данные из этой ячейки и подсчитывает количество нулей. Итог расчета выводится в другую ячейку.

Что из всего этого получилось, см. на рисунках.
Ну вот и всё. Надеюсь, вам было любопытно понаблюдать как творят программисты на разных языках. И, как видите, дело не в языке — дело в том, что именно для вашей задачи более удобно. И пусть этот простой пример не так ярко показывает возможности разных языков, но он однозначно показывает, что все языки по своему хороши.
ВНИМАНИЕ!
Если вам что-то осталось непонятно в примерах на Паскале, С++ и JavaScript, то советую почитать книги “Основы программирования”, “Основы С++” и “Что такое JavaScript”.
Как подсчитать количество нулей на конце числа?
Два подхода: 1 — преобразовать число в строку, потом идти циклом от конца строки и считать символы ‘0’ . 2 — в цикле делить число на 10, считать сколько раз поделится делится без остатка.
14 сен 2020 в 12:03
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
Будём считать количество нулей следующим образом: Если число делится на 10, то делить его и увеличивать значение переменной countZero — иначе нету смысла искать нули, их попросту нет)
По правилу делимости на 10 следует, что если число оканчивается на «0» то число делится на «10».
Краткое решение на python:
n = int(input()) if (n == 0): print(1) exit() countZero = 0 while (n % 10 == 0): n //= 10 countZero += 1 print(countZero)
Как можно узнать количество нулей в числе?
К примеру есть число 1000000 .
Как узнать сколько в данном числе нулей?
Интересуют только числа вида 10 в степени «кол-во нулей».
- Вопрос задан более трёх лет назад
- 2226 просмотров
Комментировать
Решения вопроса 2
Вычислить логарифм по основанию 10.
10^x = a
x = log10(a)
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать

int count = 0; while (val >= 10) < count++; val /= 10; >
Условие
Дано N чисел: сначала вводится число N, затем вводится ровно N целых чисел. Подсчитайте количество нулей среди введенных чисел и выведите это количество. Вам нужно подсчитать количество чисел, равных нулю, а не количество цифр.
Решение
num_zeroes = 0 for i in range(int(input())): if int(input()) == 0: num_zeroes += 1 print(num_zeroes)
Добавить комментарий Отменить ответ
ЕГЭ на соточку для чайников
Прошу прощения, что так долго пропадал. Питошка вернулся, да еще и с группой в вконтакте, подписывайтесь. Помимо этого, на питошке откроется новая рубрика, в которой будут четкие объяснения всех заданий ЕГЭ и ОГЭ по информатике, внимательно прочитав которые, я уверен, вы улучшите свои баллы на экзамене