

<https://atcoder.jp/contests/abc068/tasks/abc068_b>

下記の抜粋コードの部分で，maxにindexを格納して表示したいのですが，表示されるのがindexではなく配列に格納したデータが表示されてしまいます。  
どのように修正を行ったらindexが表示されるのでしょうか。

Paiza.ioでCppを使用しています。

[code]

    テスト値
    入力：100
    出力：64
    
    ※現在は8が出力されている
    
    
[/code]

[code]

    ～～～～～～抜粋～～～～～～～
    
        int max = 0;
        for (int j = 1; j <= n; j++) {
            if (max < data[j]) max = j;
        }
    
        cout << max << endl;
    
        return 0;
    
    
[/code]

[code]

    #include <bits/stdc++.h>
    
    using namespace std;
    
    int getDivisionCount(int i) {
        int count = 0;
        while (i % 2 == 0) {
            i /= 2;
            count++;
        }
        return count;
    }
    
    int main() {
        int n;
        cin >> n;
        
        int data[100];
        
        for (int i = 1; i <= n; i++) {
            data[i] = getDivisionCount(i);
        }
        
        int max = 0;
        for (int j = 1; j <= n; j++) {
            if (max < data[j]) max = j;
        }
        
        cout << max << endl;
        
        return 0;
    }
    
    
[/code]


CC BY-SA 4.0
2023-01-18T07:35:23.057
93431
2023-01-18T11:32:17.327
56641
question
c++
indexを表示したいが配列に格納されているデータが表示される


> if (max < data[j]) max = j;

`max` を何の値を扱うための変数だと想定しているのですか？

`data[j]` と比較しているところを見ると，`max` はデータ値を扱うためのものと見えるが，  
代入されているのは `j` であり，データ値ではなくindexである  
……というところで，明らかに変です．

データ値たるべきなのかindexたるべきなのか，どちらの想定なのか知りませんが，想定通りの対象を扱うようにすればよいでしょう．  
別の物を扱いたいなら別途それ用の変数を設けてみてはどうですか？


CC BY-SA 4.0
2023-01-18T08:55:04.997
93434
2023-01-18T08:55:04.997
52236
93431
answer