Задача С++ в классах

Тема в разделе "C/C++/C#", создана пользователем NickaNet, 19 дек 2010.

Статус темы:
Закрыта.
  1. NickaNet

    NickaNet Гость

    Дан массив натуральных чисел. Напечатать:
    а) все элементы массива, являющиеся двузначными числами
    б) все элементы массива, являющиеся трёхзначными числами

    Не могу решить эту задачу в классах, плохо разбираюсь в них. Пожалуйста, помогите с решением, очень срочно требуется!
     
  2. Rififi

    Rififi Гость

    Код (C++):
    #include <algorithm>
    #include <functional>
    #include <iostream>

    #include <math.h>

    #include <locale>

    /*
    Дан массив натуральных чисел. Напечатать:
    а) все элементы массива, являющиеся двузначными числами
    б) все элементы массива, являющиеся трёхзначными числами
    */


    template <int N>
    struct Power
    {
    enum { value = 10 * Power<N-1>::value };
    }; 

    template <>
    struct Power<0>
    {
    enum { value = 1 };
    }; 

    template <int NumberOfDigits>
    struct digits : public std::unary_function<int, bool>
    {
    bool operator()(int i) const
    {
    i = abs(i);
    return i >= MIN && i < MAX;
    }

    static const int MIN = Power<NumberOfDigits-1>::value;
    static const int MAX = Power<NumberOfDigits>::value;
    };

    template <size_t D, typename T, size_t N>
    size_t count(const T (&arr)[N])
    {
    return std::count_if(arr, arr+N, digits<D>());
    }

    int main()
    {
    setlocale(LC_ALL, "");

    const int arr[] = {1,5,9,10,99,100,123,500,999,-999,1000,1001};

    std::cout << "Number of two-digit numbers: " << count<2>(arr) << std::endl;
    std::cout << "Number of three-digit numbers: " << count<3>(arr) << std::endl;

    return 0;
    }
    Проверка:

    http://codepad.org/ozNv5CRo
     
Загрузка...
Похожие Темы - Задача С++ классах
  1. Аделина
    Ответов:
    1
    Просмотров:
    973
  2. Facktor88
    Ответов:
    1
    Просмотров:
    1.016
  3. Facktor88
    Ответов:
    0
    Просмотров:
    1.082
  4. Inforus10
    Ответов:
    4
    Просмотров:
    1.680
  5. astorr
    Ответов:
    0
    Просмотров:
    931
Статус темы:
Закрыта.

Поделиться этой страницей