ROBボーデンは:こんにちは、私はロブだ。 と私はあなたを充電している願っています 信用のためアップ。 我々がする必要があるので、まず最初に クレジットカードを要求している ユーザーからの数。 ここでは、getLongLongを使用している。 あなたは、getStringをも使用することもできますが、 その場合、あなたがチェックする必要があると思います 全く非数値は存在しなかったことを 文字列内の文字。 だから我々はgetLongLongを使用します。 あなたが何かを使用することはできませんことを覚えておいてください のgetIntのように、数以降になります 整数に収まるには大きすぎる。 我々は、その番号を持っていたら、 このwhileループこちらをご覧ください。 したがって、このwhileループは実施しています ルーンのアルゴリズムがあること PSET仕様で参照してください。 そしてそれは実際に起こっている 少し賢いなければ。 そうPSET仕様で、気づくこと 1と2は別々なステップ。 まず、全体のクレジットカード上に行く 数、他のすべてのを探して 文字に二から始まる 最後の文字、そして、それらを掛け合わ とすべての数字を追加すること。 そして、その後、我々は中に追加 他の数字がすべて表示されます。 だからではなく、2のものを行う 別々のステップは、結合しようとしている その上1反復に 全体クレジットカード番号。 ここでは、int型電流桁の等号を参照してください。 クレジットカード番号はmod 10。 クレジットカード番号とは何ですか MOD 10をやって? それは私達に最後の数字を与えている 全体数は。 だから我々は分割かのことを覚えておいてください 10による数アップ、そして残り その最後の数字が何でだろう。 23は、10で割ったもの 残りの部分は3になります。 だから、最後の桁は、今ここに、我々が表示さ 我々は2でMULTに分岐している。 それでは、私たちは、MULTを使用することになるだろう 2で用が区別されている 「他のすべての数字の1から 二桁」の数字。 2によるMULTは、通りに開始しようとする 最後の数字ではないはずなので、偽 から考えること 最後の数字に第二。 それではこのforループの最後には、 我々はこれを変更しようとしていることがわかります falseからtrueに。 のためのループの次の反復では、 それがされるまで、真とみなさために起こっている 我々は変更終わり、 trueからfalseにそれ。 その後、我々は3番目になるだろうから の一つではない最後の桁、 我々は2倍しなければならない数字。 だから我々はそのうちの一つであることが起こる場合は、 我々は2倍したい数字、 我々は我々のチェックサムを追加してください。 そしてここでは、使用している 一度に三項演算子 再び少し賢いこと。 そう電流桁次いで、5未満である場合 我々だけで最新版桁の2倍を行うことができます。 それは簡単です。 それが1だならば、我々は2を追加したい。 それは2の場合は、4を追加したい。 それが4なら、我々は8を追加したい。 それでは、約5特別なの? さて、5回2は10です。 とPSETスペックから覚えている 我々は数字を追加したい 番号2倍ではなく、 数回2そのもの。 もしそうであれば、元の番号 7、7回2は14です。 私たちは、1と4を追加したい 数に、ではない14。 そこでここでは、数が5以上の場合、 私たちがやっていることは最新版の数字です 回2マイナス9。 そして、あなたはそれについて考える場合には、 5回2は10です。 そして私たちは、1を追加している 10のマイナス9である。 6回2は12である。 だから我々は3を追加して、その 12のマイナス9である。 そして、それはすべての数字のために働く。 だから、我々が追加しているものだ 私たちのチェックサム。 この他には、手順を取り扱うれるものです ただで割ったあまりのアルゴリズムの二つ それを実現しない場合に数字を追加する 他のすべての数字の1であると。 我々はそれをしたらそう、これが維持されている の最初の2文字を追跡 クレジットカード番号は、最初の2つの 我々は最終的に行っているので、数字、 確認するために、ここでそのダウン使用したいために、 大丈夫、ビザは起動する必要があります これで、アメリカンエキスプレスのニーズ これで起動して、というように。する 最後に、我々はクレジットカードをやる 番号は、クレジットカードに等しい 10で割った数。 なぜ我々はそれが行うのですか? さて、私たちは最後の数字を処理していました。 10で割るとシフトします 全体数に対する。 戻るときに我々がループだから今、私たちはしている ハンドリングするつもり 最後の数字に第二。 我々は再びこれを打つときに、我々は行っている 最後から2番目をカットする 桁、ループバック、およびハンドル三 最後の数字に、というように、時まで 数は、その時点で0になる 私たちは、whileループから抜け出す。 また、クレジットを追跡している カード番号の長さ、すなわちなので それはだかどうかを区別することが重要 有効なクレジットカード番号。 だから今、かつて我々は、計算されました チェックサム、我々はそれかどうかを判断できます 有効なカードです。 サムMOD 10は一部であり、 ルーンのアルゴリズム。 サムMOD 10を返すものであれば ゼロ以外の場合、これは、trueを返します その場合には、数 無効にする必要があります。 そうでない場合、チェックサムMOD 10 0であり、我々は継続することができます。 これは、他の大きな言っている場合は、最初の場合 2桁は、AMEX 1に等しい ここに、我々はアメックスというところを参照してください。 1は、仕様により、34です。 そして、我々はまた、それを比較します 37でアメックス2へ。 とクレジットカード番号の長さがある 予想されるアメリカン·エキスプレスに等しい カードの長さは、我々はできる アメリカン·エキスプレスを印刷します。 私たちはビザと同じようなことをするつもりだ。 最初の2桁が大きいことが必要です または40に等しいか、より少ない 以上、または49に等しい。 それらは有効なビザカードを表しています。 および長さに等しくする必要がある ビザの長さ1またはビザの長さ2。 だから長さは、いずれかである必要があります 13または16桁の長さ。 そして最後にマスターカードと、それはだ ビザと同様に、その最初の2 数字は、特定している必要 レンジ、長必見 正確に16桁である。 だから、それらのケースのいずれかが、その後に保持している場合 最初のケースでは、我々はアメックスを印刷します。 この場合は、保持している場合、我々はビザを印刷します。 この場合は、保持している場合、我々はよ マスターカードを印刷します。 しかし、それらのどれもが成立しない場合も、 チェックサムが有効であった場合には、 我々はまだ無効に印刷。 それは一つではありませんので、 カードはそれらのタイプ。 私の名前はロブであり、私はあなたを願っています クレジット面白いが見つかりました。