Вычисление контрольной цифры для ISBN

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

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

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

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


person Matt    schedule 12.09.2010    source источник


Ответы (3)


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

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

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

person Shamim Hafiz    schedule 12.09.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

и так далее!

person Spacedman    schedule 12.09.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.
person knittl    schedule 12.09.2010