Раздел: Задачи / Простейшие /

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

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

Условие задачи 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 я использовал поле ввода. Как это делается, я рассказал здесь.

Найти количество нулей в строке на JavaScript

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

Найти количество нулей в строке на VBScript

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

Пользователь вводит данные в ячейку таблицы Excel, а макрос на языке VBA читает данные из этой ячейки и подсчитывает количество нулей. Итог расчета выводится в другую ячейку.

Найти количество нулей в строке на VBA

Что из всего этого получилось, см. на рисунках.

Ну вот и всё. Надеюсь, вам было любопытно понаблюдать как творят программисты на разных языках. И, как видите, дело не в языке - дело в том, что именно для вашей задачи более удобно. И пусть этот простой пример не так ярко показывает возможности разных языков, но он однозначно показывает, что все языки по своему хороши...

ВНИМАНИЕ!
Если вам что-то осталось непонятно в примерах на Паскале, С++ и JavaScript, то советую почитать книги “Основы программирования”, “Основы С++” и “Что такое JavaScript”.


Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика