Я беру курс CS50 на edx.org; это называется «Введение в компьютерную науку».Как отделить остаток от длинного длинного номера?
Я пытаюсь решить проблему с 1-й неделей. Поэтому пользователь вводит номер кредитной карты, и мне нужно разработать какой-то алгоритм, чтобы проверить, действительно ли его номер. Для этого мне нужно разделить целое 16-значное число на цифры. И я застрял здесь. Наверное, мне нужно сделать это в цикле, чтобы каждый раз набирать цифры по цифрам, и для этого я хотел разделить вход пользователя на каждый каждый шаг и как-то получить остаток.
Невозможно преобразовать в тип int
из-за ограничений int
на количество цифр, которое оно может удерживать. Как я могу реализовать эту функцию? Я попробовал это, но потом понял, что это ни к чему. На первый взгляд, по крайней мере. cre_num
остается за кредитным номером.
long long check(long long cre_num)
{
double part, i;
for (i = 0.1; i <= 1; i = i+0.1)
{
if (cre_num/10 == i)
{
part = i;
}
}
return part;
}
Понял! Большое вам спасибо, не думал об этом виде реализации. –
Значение 'long long'' cre_num/10' никогда не будет равняться значению 'double' в диапазоне от 0,1 до 0,9. Он * может * приравнивать к '1.0', но' i' в цикле может даже не быть '1.0', потому что числа с плавающей запятой« сломаны », когда дело доходит до добавления неизбежно неточного кодирования« 0,1 », добавленного к себе 9 раз и ожидая, что он будет равен «1.0». Если номер карты был введен по цифре: держите его таким образом, если вы хотите изучить каждую цифру. –
Вы должны включить тег cs50 –