2017-06-28 1 views
-5

APERÇU: Étant donné 2 entiers (num1, num2), écrire une fonction qui renvoie le nombre de nombres entre le num1..num2 qui sont divisible par num1. E.g .: count (3, 15) renvoie 5 (3, 6, 9, 12, 15). Remarque: Vous devez prendre en compte la plage inclusive ENTRÉES: Deux nombres num1, num2. num1, num2> = 0.programme pour compter les nombres qui sont divisibles par nombre donné

SORTIE: renvoie le nombre de nombres entre num1..num2 divisible par num1.

CAS D'ERREUR: Renvoie -1 dans les cas d'erreur. Voici mon code:

int count(int num1, int num2) { 
    int temp; 

    int i, j,k; 

    i = num1; 
    j = num2; 
    temp = 0; 
    for (k = 1; k <= j;k++) 
    { 
     if (k%i == 0) 
      temp++; 


    } 

    return temp; 

} 

Pendant l'exécution de cas de test en studio visuel un seul test est passé et un autre test ne passe pas pour les tests. La partie I mise en évidence est le test qui a échoué. (CountZero testcase)

enter image description here Ce qui suit est l'erreur qui est levée lorsque je l'ai essayé en cours d'exécution dans l'outil. enter image description here S'il vous plaît aider moi

+2

Ne postez pas d'images de texte. Lire [demander]. – Olaf

+0

La chose la plus utile que vous pouvez faire est d'essayer de vous raconter, en mots, ce que vous pensez que votre code fait pour quelques cas de test simples. Si c'est plus facile, vous pouvez commencer avec le cas de test défaillant. Vous n'indiquez pas quel est le cas d'échec, mais essayons 'count (9, 10)'. Je pense que la réponse devrait être "0" mais votre implémentation obtient "1". Parcourez le code pour quand 'num1' est 9 et' num2' est 10, étape par étape dans votre tête. –

+0

Je ne peux pas voir vos images. De toute façon, comme vous l'avez dit, vous voulez compter les nombres entre les nombres insérés mais vous partez de 1 dans la boucle 'for'.Votre boucle for devrait être comme suit: 'pour (k = num1; k <= num2; k ++) {if (k% num1 == 0) temp ++;}' –

Répondre

1

Vous y êtes presque. Voici le pseudo code de ce qui a été demandé, comparez à votre fonction, ajoutez les parties manquantes, et il devrait passer les tests sans problèmes. fonction

(de num1, num2), les retours comptent

  • entrée de contrôle est dans la plage indiquée: num1 < = num2? num1, num2> = 0?
    • sinon, retour -1
  • nous utiliserons%, vérifier l'entrée pour éviter une division par zéro
    • si num1 == 0, retour -1
  • réinitialiser le comptage
  • boucle pour (i = num1; i < = num2; ++ i)
  • si i% num1 == 0, (sho ULD être sûr, si tous les cas d'erreur sont déjà couverts)
    • ++ comptent
  • boucle d'extrémité
  • nombre de retour.