0

基本的に私が探しているのは、配列の内容 (例: 句) を比較対象の個々の単語に設定する方法です。そのため、ユーザーがデータを入力すると、同じ長さの単語がいくつあるかがわかります。

void main(){
     char array[30];
     int length, cont, array_tokens;
     printf("enter a phrase: ");
     scanf("%[^\n]s", array); //or gets(array); which ever one you like
     /*-------------------------
      *******magic happens*******
     ---------------------------*/
     for(int i=0; i<wordcount;i++)
         printf("%d word(s) with %d letters was entered", array_tokens, cont);//some sort of 
     system("pause");                                                      //counter which came 
}                                                                         //with the magic that 
                                                                         //happened before

したがって、結果は次のようになります。

フレーズを入力してください:ユーザーは類似した長さの単語を含むフレーズを入力しました

1 文字で 1 単語が入力されました

4 文字の 2 つの単語が入力されました

5文字の単語が1つ入力されました

6 文字で 3 つの単語が入力されました

7文字の単語が1つ入力されました

4

3 に答える 3

1

strtok() は、この問題を解決する 1 つの方法です。効率化を目指しているのであれば (そうするべきです)、文中の文字を反復処理するループを作成する必要があります。最後の空白以降に遭遇した非空白文字の数を数え、空白を取得するたびに n-letter-word-frequency 配列を更新します。これを行うためのコードを書くこともできましたが、実際に機能するコードを自分で書いたときの満足感を奪いたくありません。:P

于 2013-07-01T19:51:55.820 に答える
0

count[i]が長さiの単語数である配列countを持つことができます。

Set count to 0
Set t to 0
for(int i=0;i<given_phrase.length();i++)
{
 if(given_phrase[i]==' ')
 {
   count[t]++;
   t=0;
 }
 else
 {
   t++;
 }
}

C の場合は、句の終わりの '\0' をチェックするだけです。次に、カウントに基づいて結果を表示できます。

于 2013-07-01T20:01:03.603 に答える