0

出力配列に文字要素があるかどうかを確認しようとしています。配列は、文字列内の文字の頻度を取得しています。したがって、現在の文字が配列内にある場合は頻度に 1 を追加し、それ以外の場合は頻度 1 で文字を配列に追加します。

テーブルがどのように見えるべきかのEX:

  character: a b c d
  freqency:  1 2 3 4


string input = GetInputString(inputFileName);
char ** output; 

for (int i = 0; i < sizeof(output); i++)
{
      if (input [count] == output[i][]) // this is where my issue is
      {

            //.......
      }

}
4

2 に答える 2

1

あなたの例が、「a」が 0,0、「b」が 0,2、1 が 1,0 などであることを意味すると仮定すると、文字は常に最初の行にあることを意味します。 0[x] のエントリ。

// you should declare your array as an array
char output[2][26] = {0}; // {0} initialises all elements;
// ... assign values to output.

// I assume there's a count loop here, that checks for the upper bounds of input.
// ...
// You have to determine how many columns there are somehow, 
// I just made a static array of 2,26
const int columnsize = 26; 
for (int i = 0; i < columnsize;   i++)
{
  if ( input[count] == output[0][i] )
  {
        // found the character
  }
}

これは実装を機能させるためのものですが、これを行うためのより良い、または少なくとも簡単な方法があります。たとえば、配列のサイズがコンパイル時に固定されていない場合は、ベクトルのベクトルを使用できます。または、文字の出現を追跡するだけの場合は、文字の stl マップを頻度に使用できます。

于 2013-10-07T05:15:17.333 に答える