プロが教えるわが家の防犯対策術!

13桁の数字を入力して、その奇数番目の和と偶数番目をそれぞれ3倍した和の総和を求めて、それが10で割り切れたら〇、
割り切れないもしくは入力された値が13桁ではない場合×を表示する
というプログラムを組みたいのですがわかりません。
有識者の方、プログラムとそれぞれの仕組みについて教えていただければ幸いです…

A 回答 (4件)

数字以外がはいってる時は?

    • good
    • 0

「13桁」って, どう判断すればいいんだろう. たとえば


0000000000000000000074280638140059
は「13桁」ですか?
0000736452058
は?

この場合についていえば atoi を使うよりも文字コードを直接いじったほうがいいかも>#2.
    • good
    • 0

#include <stdio.h>


#include <stdlib.h>

int main(void) {
 char s[14], a[2];
 int i, sum, even_result = 0, odd_result = 0;
 scanf("%13s%*[^\n]%*c", s);
 a[1] = '\0';
 for (i = 0; i < 13; i++) {
  a[0] = s[i];
  if (i % 2 == 0) {
   odd_result += atoi(a);
  } else {
   even_result += 3 * atoi(a);
  }
 }
 sum = odd_result + even_result;
 if (sum % 10 == 0) {
  puts("○");
 } else {
  puts("☓");
 }
 return 0;
}
    • good
    • 0

>割り切れないもしくは入力された値が13桁ではない場合×を表示する


>というプログラムを組みたいのですがわかりません。

何がわからないのかを少しは書いてもらわないと、回答する方も
書き様がないんですけどね。

多分、最初に問題になるのが、入力を文字列として入力する
のか、数値として入力するのか、というところですかね。
これをどちらかに決めて、13桁といわず4桁ぐらいの入力を
考えてみて、奇数桁と偶数桁の数字を取り出すところまで
やってみればいかがでしょう。

例えば、数値として4725という4桁の数字が入力されたとする。
4桁目の'4'という数字をどう取り出すか、というと、1000で
割ればいいということに気づく。次に3桁目の数字を取り出す
には、4*1000 をもとの数値から引いて、725にしておいて100で
割れば、3桁目の'7'が出てくる。では、2桁目は?1桁目は?と
考えれば、求められるはず。あとは、この手順をプログラミング
上でどう書いていったらいいか、ということになる。

このくらいまで書けば、具体的なプログラミングの入り口くらい
にはなるでしょう。 4桁ができれば、拡張して13桁にすればいい
(整数の表現範囲に関しての落とし穴があるけれど)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!