Раздел: Задачи / Простейшие /
Найти количество нулей во всех числах последовательности
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Условие задачи 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”.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |