CPP:The number of doubles

#include "stdafx.h"
#include <string>
#include <iostream>
#include <algorithm>

int doubleNumbers(int array[], int len) {
    int result = 0
      , idxPos = 0
    ;

    for (int i = 1; i < len; i++) {
        if (0 == array[i]) { // no input for itself
            continue;
        }

        idxPos = i << 1;
        if (idxPos >= len) {
            continue;
        }

        if (1 == array[idxPos]) {
            result++;
        }
    }

    return result;
}

unsigned int count_digits(const std::string& s) {
    return std::count_if(s.begin(), s.end(),
        [](unsigned char c){ return '-' == c || isdigit(c); }
    );
}


void readIntArray(int array[], const int len) {
    std::string input;
    int idx = 0
      , number = 0
    ;

    memset(array, 0x00, len * sizeof(int));
    while (0 <= number) {
        std::cin >> input;
        if (count_digits(input) != input.length()) {
            input.clear();
            continue;
        }

        number = std::stoi(input);
        if (number >= len) {
            std::cout << "the number must be less than:" << len << std::endl;
        } else if (0 < number) {
            array[number] = 1;
        }
        input.clear();
    }
}


int _tmain(int argc, _TCHAR* argv[]) {
    int lenArray   = 100
      , *pIntArray = NULL
      , doubleNums = 0    
    ; 

    pIntArray = new int[lenArray];
    readIntArray(pIntArray, lenArray);
    doubleNums = doubleNumbers(pIntArray, lenArray);

    delete[] pIntArray;
    pIntArray = NULL;

    std::cout << "doubleNums=" << doubleNums << std::endl;
    std::cin >> lenArray;
}

猜你喜欢

转载自www.cnblogs.com/xinyueliu/p/12789643.html
cpp