2

入力ファイルから文字の種類と頻度を記録するために使用するベクトル vec (256, 0) があります。したがって、3 A の場合、私の vec[65] は 3 の値を保持します。出力ファイルに、空でない文字の合計数と、それに続く ASCII 文字と発生頻度を書き込もうとしています。

int count = 0;
for (int i = 0; i < 256; i++)
  if (vec[i] != 0)  // if not 0 count it
    count++;

// print the count as the first char in output file
outfile << count;

for (int i = 0; i < 256; i++)
  if (vec[i] != 0)
    outfile << (char) i << vec[i];

入力「a bb c」が与えられた場合、私が望むのは次のとおりです。

4a1b2c1

しかし、私が得るものは次のとおりです。

5

1 2a1b2c1

これを修正するにはどうすればよいですか?

4

4 に答える 4

0

次のコードを使用します。

int count = 0;
for (int i = 0; i < 256; i++)
  if (i != 32 && i != 10 && i != 13)  // don't count ' ' (spaces) and other stuff
    count += vec[i]; //(not all vec[i] values are 1, 98 for instance is 2 (bb))

cout << count;

for (int i = 0; i < 256; i++)
 if (i != 32 && i != 10 && i != 13 && vec[i] != 0)
    cout << (char) i << vec[i];
于 2013-08-23T21:04:25.863 に答える