このようなことをしたいのでしょうか?
C++
1int value;
2std::cin >> value;
3
4int numOfOdd = 0;
5for(int i = 0; i < 4; i++) {
6 if(value % 2 == 1) {
7 numOfOdd++;
8 }
9
10 value /= 10;
11}
12
13std::cout << numOfOdd << std::endl;
もうちょっと柔軟にすると、次のような感じになるでしょう。
C++
1for(int val = value; val != 0; val /= 10) {
2 if(val % 2 == 1) {
3 numOfOdd++;
4 }
5}
vectorクラスは確かに配列のように複数の値を保管できます。
しかし、自動的に一桁一桁分解してくれるわけではありません。
どうしてもvectorを使いたいなら、こんな風な関数が必要かと。
C++
1// 整数を一桁一桁vectorにpush
2void pushEachDigit(std::vector<int> &dst, int num) {
3 dst.clear();
4 dst.shrink_to_fit();
5
6 for(; num != 0; num /= 10) {
7 dst.push_back(num % 10);
8 }
9}
C++
1inline bool isOdd(int num) {
2 return num % 2 == 1;
3}
4
5// vectorに格納された『奇数』の個数を返す
6int countOddDigit(const std::vector<int> &vec) {
7 int numOfOdd = 0;
8 for(auto elem: vec) {
9 if(isOdd(elem)) {
10 numOfOdd++;
11 }
12 }
13 return numOfOdd;
14}
そうすると、質問者様の書きたいコードはこんな構造になりますね。
C++
1int tsuika::argk(std::vector<int>& vec) {
2 int value = 0;
3 std::cin >> value;
4
5 puchEachDigit(vec, value);
6 int numOfOdd = countOddDigit(vec);
7
8 return numOfOdd;
9}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/09/01 06:44
2017/09/01 06:46
退会済みユーザー
2017/09/01 07:04
2017/09/01 07:06
退会済みユーザー
2017/09/01 07:06
退会済みユーザー
2017/09/01 07:16
退会済みユーザー
2017/09/01 07:24
2017/09/01 07:32 編集
退会済みユーザー
2017/09/01 08:36
2017/09/01 09:44
退会済みユーザー
2017/09/01 11:02
2017/09/01 11:29
2017/09/01 11:30
退会済みユーザー
2017/09/04 10:13
2017/09/04 13:11
2017/09/04 13:14 編集
退会済みユーザー
2017/09/04 22:35