2017-10-18 17 views
-2

숫자에 특정 숫자가 포함되어 있는지 확인하는 containsDigit이라는 함수를 작성하십시오. 숫자는 숫자가 포함 된 경우숫자에 클래스 할당을위한 숫자가 포함되어 있는지 확인

bool containsDigit(int number, int digit); 

는 다음 기능은 true를 반환해야합니다 : 같은

헤더가 보일 것입니다. 그렇지 않으면 함수는 false을 반환해야합니다. 나는 다음과 같이 쓸 때 나는 항상 false를받을 이유

Input: 
147 9 

Output: 
false 

나도 몰라 :

bool containsDigit(int number, int digit); 

int main() { 
    double con; 
    int number, digit; 
    cout << "Input a number and a digit:\n"; 
    cin >> number >> digit; 
    con = containsDigit(number, digit); 
    cout << con; 
    return 0; 
} 

bool containsDigit(int number, int digit) { 
    int a(0), b; 
    b = number; 
    while (number > 0) { 
    a = a + 1; 
    number = number/10; 
    } 
    cout << a; 
    while (a > 1) { 
    a = a - 1; 

    if (b/pow(10, a) == digit) { 
     cout << "true\n"; 
     break; 
    } else { 
     if (a == 1) 
     cout << "false\n"; 
     else 
     cout << ""; 
    } 
    b = b % pow(10, a); 
    } 
} 
+1

당신은 루프 각각의 자리에 숫자를 분할하는 방법을 기억하십니까? 그렇게. 숫자를 얻을 때마다 찾고있는 숫자와 일치하는지 확인하십시오. 루프가 끝나면 번호에 숫자가 포함되지 않습니다. –

+5

이 웹 사이트는 숙제를 제공하지 않습니다. 귀하의 측면에서 적절한 노력을 보여주십시오. – P0W

+2

숙제와 관련하여 질문하는 것은 문제가되지 않습니다. 그러나 당신이 보여 주어야하는 최소한의 노력은 질문을 형식화하고, 문제를 해결하기 위해 만든 코드를 보여주고, 문제를 해결하기 위해 문제가 무엇인지 설명하는 것입니다. –

답변

5

문제를 깨는 키 코드로 이동, 어떻게 자신을 물어 시작하지 않는 것입니다 숫자를 추출합니까?

연산자를 10과 함께 사용하십시오. 귀하의 current number % 10입니다. 왜 10일까요? 다른 번호가 아닌가? - 우리는 나머지 숫자를 나누어야합니다. 즉, modulo 연산자가 다른 숫자를 잘라내도 계산기에서 그것을 시도하지 않습니다.

지금까지 그렇게 좋았지 만 지금은 무엇을해야합니까? 검색을 진행하고 나머지 숫자를 비교해야합니다. 147 % 10은 이미 7을 주었고 14을보고 싶습니다. 7에서 14를 분리하고 10으로 나누고 7을 제외한 나머지 부분을 얻으십시오. 숫자를 찾거나 결과 번호가 될 때까지 스캔을 계속합니다. . 여기에 문제가 있습니다, 후속 조치 은 음수에 대한 코드 작동합니까? 나는 그것을 알아낼 수 있도록 너를 떠날 것이다. 우리는 다음과 같은 코드로 남아 있습니다

bool containsDigit(int number, int digit) 
{ 
    while (number != 0) 
    { 
     int curr_digit = number % 10; 
     if (curr_digit == digit) return true; 
     number /= 10; 
    } 

    return false; 
} 
+1

'while (number)'는 작동하지만, 초보자에게 즉시 명확하지 않은 기술에 의존합니다. 나는 'while (number! = 0)'이 더 명백 할 것이라고 제안한다. –

+0

@CraigYoung 대단한 제안 –

+0

@CraigYoung 사실, 이러한 경우에는 의사 언어 또는 일종의 표준 다이어그램을 사용하여 동작을 나타내는 것이 좋습니다. 그런 식으로 소위 기술을 피하고 자신의 스타일로 구현하는 것은 구현 자의 몫입니다. 그것은 또한 더 나은 교육 효과가 있습니다. – scopchanov