私はedx.orgでCS50コースを受講しています。それはコンピュータ科学入門と呼ばれています。長いロングナンバーから残渣をどのように分けるのですか?
私は第1週問題を解決しようとしています。だからユーザーがクレジットカード番号を入力し、それが有効かどうかをチェックするアルゴリズムを開発しなければならない。これを行うには、16桁の数字全体を数字に分割する必要があります。そして、私はここで立ち往生しています。私はループでこれを行う必要があると思います。各ステップの数字を数字で取得する必要があるので、ユーザーの入力を各ステップごとに10に分けて、何らかの形で残量を求めたかったのです。
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'は決して0.1から0.9までの範囲の 'double'値にはなりません。浮動小数点数が「0.1」の不正確なコーディングを必然的に9回追加すると浮動小数点数が「壊れている」ため、「*」は「1.0」に等しいかもしれませんが、ループの 'i'は決して' 1.0 ' 1.0に等しくなることを期待する。カード番号が1桁ずつ入力された場合:各桁を調べたい場合は、そのまま使用してください。 –
cs50タグ –