10.01.2021
Новый выпуск журнала Автоматизация и Программирование.
08.12.2020
Новые видео и статья Таблицы в HTML.
03.12.2020
Новый выпуск журнала Автоматизация и Программирование.
15.11.2020
Новые видео и статья Процедура Str.
25.10.2020
Добавлен курс Как стать веб-разработчиком.
Раздел: Задачи / Простейшие /
Найти количество нулей во всех числах последовательности
Условие задачи 0.4
Задача 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) { unsigned int i, n = 0; for (i = 0; i < st.length(); i++) if (st[i] == '0') n++; return n; }
Пример на JavaScript
function GetZerosNum(st) { var i, n = 0; for (i = 0; i < st.length; i++) if (st.charAt(i) == '0') n++; return n; }
Пример на 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
, в которую буду получать строку, введённую пользователем.
В Паскале никаких сложностей с этим нет - просто используйте
ReadLn(str);
Снова и снова убеждаюсь, что Паскаль - это очень крутой и простой язык.
А вот в С++ всё будет не так просто. Если вы используете cin
, то будете неприятно удивлены тем обстоятельством, что строка будет прочитана только до первого пробела. Поэтому придётся сделать так:
getline(cin, str);

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

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

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

Что из всего этого получилось, см. на рисунках.
Ну вот и всё. Надеюсь, вам было любопытно понаблюдать как творят программисты на разных языках. И, как видите, дело не в языке - дело в том, что именно для вашей задачи более удобно. И пусть этот простой пример не так ярко показывает возможности разных языков, но он однозначно показывает, что все языки по своему хороши...
ВНИМАНИЕ!
Если вам что-то осталось непонятно в примерах на Паскале, С++ и JavaScript, то советую почитать книги
“Основы программирования”,
“Основы С++” и
“Что такое JavaScript”.
Подписаться на канал в YouTube
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |
![]() |
Основы C++
C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее... |