Расчет контрольной цифры для ISBN - PullRequest
4 голосов
/ 13 сентября 2010

На самом деле это не домашняя работа, я просто просматриваю некоторые вопросы в отдельной книге по математике, прежде чем начать изучать информатику на следующей неделе.

Во всяком случае, один из вопросов просит меня написать программу для выполнения этого алгоритма (который он объясняет). Часть, с которой я застрял, состоит в том, как взять 9-значное число и «разбить» его на одно целое число, чтобы вычисления могли выполняться для каждой цифры.

Я думал о том, чтобы разделить число на 100 000 000 и затем взять целочисленное значение этого, чтобы получить первую цифру, но я не уверен, как получить другие.

Если бы это было в PHP или что-то еще, я мог бы просто использовать explode (), но я думаю, здесь дело не в этом: P

Ответы [ 3 ]

4 голосов
/ 13 сентября 2010

Вы можете использовать операторы мод (%) и деления (/).

N% 10 даст вам последнюю цифру. N / 10 (целочисленное деление) удалит последнюю цифру.

Вы можете продолжать, пока у вас не останется больше цифр.

1 голос
/ 13 сентября 2010

Как только вы поделили на 100 000 000 и взяли целочисленное значение, вы можете умножить это целое значение обратно на 100 000 000 и вычесть его из ISBN. Это фактически просто снимает крайнюю левую цифру. Итак, теперь повторите с 10 000 000 - и так далее.

Пример с 5 цифрами:

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

и т. Д.

0 голосов
/ 13 сентября 2010

используйте операцию по модулю:

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...