0

例えば

1 1 1 1 2 3 3 4 5 5 5

1 repeated 3 times,
3 repeated 1 time,
5 repeated 2 times

ここにコードがありますが、いくつかの問題があります

int i, k, m, number, number_prev, e;
cout << "Insert how many numbers: ";
cin >> m;
cout << "insert number";
cin >> number;
number_prev = number;
int num_rep[m]; //array of repeated numbers
int cant_rep[m]; // array of correspondent number of repetitions
e = 0;

for (i=1; i<m; i++) 
{
    cin >> number; 
    if (number == number_prev)
    {
        if (number == num_rep[e-1])
            cant_rep[e-1]++;
        else
        {
            num_rep[e] = number;
            cant_rep[e] = e + 1;
            e++;
        }
    }
    else
        e = 0;
    number_prev = number;
}

for (k = 0; k < e; k++)
    cout << "\nnumber " << num_rep[k] << " repeated " << cant_rep[k] << " times.\n";
4

3 に答える 3

0
int num_rep[m]; //array of repeated numbers
int cant_rep[m]; // array of correspondent number of repetitions

ここで、m は実行時にのみ認識され、配列サイズはコンパイル時に認識される必要があります。代わりに使用std::vectorします。

コードは C スタイルの C++ プログラムのようです。

1.ブロックの先頭で変数を宣言する必要はありません。使用前に宣言してください。読みやすくなります。

2. のSTLような型をstd::vector使用すると、このようなプログラムで多くの問題を解決できます。

于 2013-06-08T13:36:04.270 に答える