私はこのコードを持っています:
int n,m; // n - rows count , m - columns in each row count
cin >> n >> m;
string wiersze[n];
int wynik=0;
for(int i = 0; i < n;i++)
{
cin >> wiersze[i];
}
for(int i = 0; i < n;i++)
{
for(int j =0; j<m-1;j++)
{
cout << j << " " << j+1<<endl; // debbuging line
cout<<wiersze[i].at(j)<<wiersze[i].at(j+1)<<endl; // debbuging line
if(wiersze[i].at(j) == wiersze[i].at(j+1))wynik++;
}
}
文字列に文字が 2 つある場合は、 variable を増やす必要がありますwynik
。理由はわかりませんが、この例でそのコードを実行します。
4 4
あば
ああああ
あば
ばあ
行内でstd::out_of_range
エラーが発生します。string::at
if(wiersze[i].at(j) == wiersze[i].at(j+1))wynik++;
私はデバッグを試み、何が起こっているのかを確認するためにループに 2 行を追加しました。結果:
0 1
ああ
1 2 ab
2 3
バ
0 1
ああ
1 2
ああ
2 3
ab
0 1
ああ
1 2
ab
2 3
バ
0 1
bb
1 2
バ
2 3
ああ
最後の 2 行を見てください。計算によって次の行が存在しないことが正確に示されています。もちろん、私は「ばかげた」間違いと小さなデバッグを探してみましたが、それ以外の結果はありませんでした。私の場合、助けてください。