Основы программирования на С++ для начинающих

Задача: подсчёт цифр

Вводится целое число. Подсчитайте программно сколько раз в его десятичную запись входит некоторая цифра, скажем 3. Вот и всё условие. Например: 123 -> 1; 54321345 -> 2; 3333 -> 4 и т.д.

Задача очень простая … на уровне средней школы. Но для того, чтобы задачу сделать не совсем уж тривиальной – усложним:
– предложите несколько (как можно больше) разных способов реализации;
– для каждой реализации сократите запись кода так, чтобы он был, как можно более кратким.

Решения (из-за простоты задачи есть где развернуться, решений может быть очень много, дополняйте своими):

Здесь всё решение укладывается в один оператор do … while. Но, обратим внимание на то, что “вводится целое число” – это ввод всегда строки, представляющей число (здесь подвох в формулировке задачи). Тогда:

Или так:

Или даже так:

И вот как это выглядит:

P.S. Эта задача является хорошей иллюстрацией того основополагающего принципа программирования, что любая поставленная задача может быть решена многими и очень разными способами.

8 thoughts on “Задача: подсчёт цифр

  1. я решил вот так

  2. Пожалуйста, кто-нибудь может человеческим языком объяснить, зачем в решении использовать “unsigned”? Я искал информацию в гугле, но мой мозг оказался не готов к наплыву слишком страшных слов.

    1. потому что возможно тестирующая система набирает много цифр. Поэтому для таких цифр длиною как 10 стпенью 16 или больше используется ключевое слово ‘unsigned’.

  3. #include
    using namespace std;
    int main() {
    unsigned long long int a, c;
    int k=0;
    cin>>a;
    while(a>0) {
    c=a%10;
    a/=10;
    if(c==3) k++;
    }
    cout<<k;
    return 0;
    }

  4. #include
    #include
    using namespace std;
    int main()
    {
    string file;
    getline(cin, file);
    int sum = 0;
    for (int z = 0; z < file.size(); z++)
    {
    if (file[z] == '3')
    {
    sum++;
    }
    }
    cout << sum;
    return 0;
    }

  5. Решение с проверками на ошибки:
    #include
    #include

    using namespace std;

    int main()
    {
    string aboba = “”;
    char bebra = 0;
    int jopa = 0;

    cout << "Input nubmer: ";
    getline(cin, aboba);
    cin.clear();

    for (int i = 0; i < aboba.size(); i++)
    {
    if (!(isdigit(aboba[i])))
    {
    cout << "Error: You did not enter a number, or there were other characters in the number." << endl;
    return 1;
    }
    }

    cout <> bebra;

    if (!(isdigit(bebra)))
    {
    cout << "Error: You did not enter a number, or there were other characters in the number." << endl;
    return 1;
    }

    for (int i = 0; i < aboba.size(); i++)
    {
    if (aboba[i] == bebra)
    {
    jopa++;
    }
    }

    cout << "Numbers found: " << jopa << endl;

    return 0;
    }

Добавить комментарий для vverba Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *