Найти количество нулей во всех числах последовательности
Задача 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 2 3 4 5 6
a = str(input()) k = 0 for i in range(len(a)): if a[i] == 0: k = k + 1 print(k)
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Найти количество нулей в заданном числе
Помогите найти ошибку. Нужно написать программу которая находит количество нулей в заданном числе.
Вывести на экран числа, у которых количество значащих нулей в числе является нечетным
Разработать метод, который для заданного натурального числа N возвращает количество значащих.
Количество нулей в числе
Пользователь вводит число, а программа выводит кол-во нулей в этом числе.

Определить количество нулей в числе
Дано натуральное число n. Напишите функцию static int Numer of Zeroes(int n) определяющую.
Am I evil? Yes, I am!
![]()
![]()
16119 / 9755 / 2730
Регистрация: 21.10.2017
Сообщений: 21,624

Сообщение было отмечено Infeeqs как решение
Решение
if a[i] == '0':
Добавлено через 2 минуты
Infeeqs,
a = input() print(a.count('0'))
Регистрация: 15.02.2020
Сообщений: 195
![]()
![]()
35345 / 19945 / 4179
Регистрация: 12.02.2012
Сообщений: 33,093
Записей в блоге: 13
Сообщение от Infeeqs 
Вот что я написал
— и где тут число? Я бы это решение (даже с поправкой iSmokeJC) не зачел бы.
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
1 2 3 4 5 6 7 8 9
num = int(input('>> ')) cnt_zero = 0 while num > 0: num, tmp = divmod(num, 10) if tmp == 0: cnt_zero += 1 print(cnt_zero)
Регистрация: 15.02.2020
Сообщений: 195
В каком смысле где тут число? Его должен человек ввести.
Am I evil? Yes, I am!
![]()
![]()
16119 / 9755 / 2730
Регистрация: 21.10.2017
Сообщений: 21,624
Infeeqs, имеется ввиду, что тут
Сообщение от Infeeqs 
a = str(input())
получается строка, а не число.
Регистрация: 15.02.2020
Сообщений: 195
Ясно, ну ведь человек вводит число
Am I evil? Yes, I am!
![]()
![]()
16119 / 9755 / 2730
Регистрация: 21.10.2017
Сообщений: 21,624
Я надеюсь, ты понимаешь разницу между 1234 и «1234»?
Так вот input() возвращает строку «1234»!
![]()
![]()
![]()
![]()
12134 / 7392 / 1734
Регистрация: 25.07.2009
Сообщений: 13,559
Сообщение от Infeeqs 
ну ведь человек вводит число
Человек может ввести к примеру 001, или 0001, и в соответствующих строках будет 2 и 3 нуля, но в числе 1 с нулями как-то не задалось.
1 2 3 4 5 6 7 8 9 10 11 12 13
>>> def zcount(n): . c = 0 . while n: . if n % 10 == 0: . c += 1 . n //= 10 . return c . >>> zcount(102) 1 >>> zcount(int('0001')) 0 >>>
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от Infeeqs 
ведь человек вводит число
Как думаешь сколько нулей в числе 1e12?
Не поверишь — 12.
4751 / 2643 / 547
Регистрация: 07.11.2019
Сообщений: 4,359
Garry Galler, думаю согласно стандарту IEEE754 Double precision 64-bit число нулей в 1e12 будет побольше..
А вообще задача неоднозначная.. с одной стороны в числе 5 по крайней мере один ноль, с другой стороны нет нулей..
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Почему больше то? Я имел ввиду MEp to int\float.
4751 / 2643 / 547
Регистрация: 07.11.2019
Сообщений: 4,359
А в бинарном представлении?
1e12=01000010 01101101 00011010 10010100 10100010 00000000 00000000 00000000
Вот в этом то и неоднозначность.
Добавлено через 2 минуты
Причем впередистоящие нули тоже имеют значение..
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Найти количество нулей в числе
составить программу,которая считывает вводимые с клавиатуры числа и считает количество нулей в них.
Посчитать количество нулей в числе
⦁ Пользователь вводит число. Определить количество цифр в этом числе, посчитать их сумму и среднее.
Определить количество нулей в числе
Здравствуйте. Нужно вывести на экран количество нулей, кроме нулей в младших разрядах. Т.е. если мы.

Подсчитать количество нулей в заданном целом числе
Подсчитать количество нулей в заданном числе. P.S. Число целое.

Упростить программу, находящую количество нулей в числе
#include <iostream> #include <stdio.h> using namespace std; int main() < setlocale(LC_ALL.
Подсчитать количество нулей и единиц в заданном шестнадцатеричном числе.
Задача:Подсчитать количество нулей и единиц в заданном шестнадцатеричном числе.
Сколько нулей?
Напишите функцию, которая будет принимать число n и возвращать количество нулей, стоящих в конце факториала этого числа.
Формула факториала: n! = 1 * 2 * 3 * . * n
Подсказка: не нужно вычислять факториал. Постарайтесь найти другой способ определения количества нулей.
Примеры
trailing_zeros(0) ➞ 0 # 0! = 1 # Нулей нет trailing_zeros(6) ➞ 1 # 6! = 120 # 1 нуль в конце trailing_zeros(1000) ➞ 249 # 1000! имеет 249 нулей в конце
Вариант решения
""" 1. Никакой факториал не будет иметь меньше нулей, чем факториал меньшего числа. 2. Каждое умножение на 5 добавляет 0 к факториалу. Поэтому сперва мы вычислим, какой наибольший множитель 5 меньше `n` (`n // 5`) и добавим к счетчику столько нулей. 3. Каждое умножение на 25 добавляет два нуля, так что далее мы мы добавим к счетчику столько нулей, сколько получится от целочисленного деления n на 25. 4. Продолжаем в том же духе для всех чисел, кратных 5 и меньших (или равных) n. """ def trailing_zeros(n): pow_of_5 = 5 zeros = 0 while n >= pow_of_5: zeros += n // pow_of_5 pow_of_5 *= 5 return zeros
Задача «Количество нулей»
Дано N чисел: сначала вводится число N, затем вводится ровно N целых чисел.
Подсчитайте количество нулей среди введенных чисел и выведите это количество. Вам нужно подсчитать количество чисел, равных нулю, а не количество цифр.
Решение задачи от разработчиков на Python:
Copy to Clipboard
Другие интересные реализации задачи:
Copy to Clipboard
Смотреть видео — Задача «Количество нулей» решение на Python
Делитесь с друзьями ссылкой на ответ и задавайте вопросы в комментариях!
