2010-09-12 5 views
4

Ce n'est pas réellement des devoirs, je regarde juste quelques questions dans un livre de maths discret avant que je commence l'informatique la semaine prochaine.Calculer le chiffre de contrôle pour l'ISBN

Quoi qu'il en soit, l'une des questions me demande d'écrire un programme pour exécuter cet algorithme (ce qu'il explique). La partie avec laquelle je suis coincé est comment prendre le nombre à 9 chiffres et le "diviser" en entiers simples, de sorte que les calculs peuvent être effectués sur chaque chiffre. J'ai pensé à diviser le nombre par 100 000 000, puis en prenant la valeur entière de ceci pour obtenir le premier chiffre, mais je ne suis pas sûr de savoir comment obtenir les autres.

Si cela était en PHP ou quelque chose que je pouvais utiliser explode(), mais je suppose que ce n'est pas le point ici: P

Répondre

4

Vous pouvez utiliser le mod (%) et l'opérateur de division (/). N% 10 vous donnerait le dernier chiffre.

N/10 (division entière) supprimera le dernier chiffre.

Vous pouvez continuer jusqu'à ce que vous n'ayez plus de chiffres.

0

utiliser l'opération modulo:

a % 10 to get the last digit 
a % 100 to get the last two digits. (a % 100) - (a % 10) to get the second last number 
etc. 
1

Une fois que vous avez divisé par 100000000 et pris la valeur entière, vous pouvez multiplier cette valeur entière par retour 100000000 et soustraire de l'ISBN. Cela enlève simplement le chiffre le plus à gauche. Alors maintenant, répétez avec 10.000.000 - et ainsi de suite.

Exemple avec 5 chiffres:

Start: 74325 

74325/10000 and int = 7 (there's your first digit) 
7 * 10000 = 70000 
74325 - 70000 = 4325 

4325/1000 and int = 4 (there's your next digit) 
4 * 1000 = 4000 
4325 - 4000 = 325 

et ainsi de suite!

Questions connexes