2017-10-18 4 views
-2

Ecrivez une fonction nommée containsDigit qui détermine si un nombre contient un chiffre particulier.Déterminer si un nombre contient un chiffre pour l'affectation de classe

L'en-tête doit ressembler à:

bool containsDigit(int number, int digit); 

Si le numéro contient chiffres, la fonction devrait revenir true. Sinon, la fonction doit renvoyer false.

Input: 
147 9 

Output: 
false 

Je ne sais pas pourquoi je reçois toujours faux quand j'écris comme ceci:

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

Vous souvenez-vous comment diviser un nombre en chiffres individuels avec une boucle? Fais ça. Chaque fois que vous obtenez un chiffre, vérifiez s'il correspond à celui que vous recherchez. Si vous arrivez à la fin de la boucle, alors non, le numéro ne contient pas le chiffre. –

+5

Ce site web n'est pas un devoir. S'il vous plaît montrer quelques efforts pertinents de votre part. – P0W

+2

Ce n'est pas un problème de poser des questions liées aux devoirs. Mais l'effort minimum que vous devez montrer est de formater la question, et de montrer du code que vous avez créé pour résoudre le problème, et d'expliquer quel était votre problème pour résoudre le problème. –

Répondre

5

Briser le problème vers le bas est la clé ne saute pas au code, commencez par vous demander, comment puis-je extraire des chiffres? Utilisez l'opérateur % avec 10. C'est votre current number % 10. Pourquoi 10? et pas d'autre numéro? - Nous devons obtenir le reste après la division qui est ce que l'opérateur modulo fait un autre nombre ne le coupe pas, essayez-le sur une calculatrice. Jusqu'ici tout va bien, maintenant qu'est-ce que vous devez faire d'autre? Vous devez avancer dans votre recherche et comparer les chiffres restants. 147 % 10 déjà vous a donné 7 et vous voulez regarder 14, pour séparer 14 de 7 vous divisez par 10 et obtenez la partie restante ne comprenant pas 7. Vous continuez votre balayage jusqu'à ce que vous trouviez le nombre ou êtes hors des nombres qui est le résultat . Il y a un problème ici, un suivi, votre code fonctionne-t-il pour les nombres négatifs? Je vais vous laisser le soin de comprendre.

Nous sommes partis avec le code suivant,

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

Bien que 'while (number)' fonctionne, il repose sur des aspects techniques qui ne sont pas immédiatement évidents pour un débutant. Je suggère 'while (number! = 0)' serait plus explicite. –

+0

@CraigYoung grande suggestion –

+0

@CraigYoung, En fait, il est préférable pour de tels cas d'utiliser un pseudo-langage ou une sorte de diagramme standard pour représenter le comportement. De cette façon, les soi-disant technicités sont évitées et il appartient à l'exécutant de le faire dans son propre style. Il a aussi un meilleur effet éducatif. – scopchanov