• ベストアンサー

文字数と単語数を数えるプログラム

When in Rome, do as the Romans do. をchar形配列に格納し、文字列に含まれる(空白以外の)文字数と単語数を数え、結果を画面に出力するプログラムがうまくできません。文字数と単語数の数え方がさっぱり… アドバイスしていただけると幸いです。よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • DT200
  • ベストアンサー率38% (63/164)
回答No.3

文字数も数えると云う事なので、左から右端(NULL文字)まで1文字ずつ 走査して行きます。ここで、単語も構成する文字がA-Z,a-zであるとして、 文字から空白や記号(','や'.'、NULL文字も含む)に変わったら一つの単語 とします。 具体的には、 1. カウンタ、フラグを初期化 2. NULL文字になるまで繰り返し 3. 文字かどうか判定する 4. 文字なら文字をカウントして、フラグをセット 5. 文字でないなら、 6. フラグがセットされていれば単語数をカウントしフラグをおろす 7. フラグがセットされていないのなら何もしない 8. 1へ でいけると思います。

hororo06
質問者

お礼

アドバイスありがとうございます。 とてもわかりやすく説明していたき、ありがとうございます。 これならなんとかなりそうです。 ありがとうございました。

その他の回答 (2)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★アドバイス >多分これを使わなくてもできるのだと思うのですが、なにかいい方法はありませんか?  ↑  それが分かるのなら自力で出来る気がしますが…。 ・いい方法とはアルゴリズムのことですか?  文字数は isalpha() 関数でチェックして英大文字、英小文字の場合にカウンタを  インクリメントすればよい。  単語数はアルファベット、空白文字の並びがいくつ登場するかをカウントすればよい。  空白文字は isspace() 関数でチェックできます。 ・両方とも文字検査関数と組み合わせるだけでカウントできます。  ctype.h ヘッダをインクルードすれば利用できるようになります。 ・以上。

参考URL:
http://always-pg.com/c/runtime_rd/character/isalpha.html
hororo06
質問者

お礼

アドバイスありがとうございます。なんか難しそうですが自分なりに調べて試してみます。ありがとうございました

  • volveive
  • ベストアンサー率38% (31/81)
回答No.1

strtok という関数について調べてみてください。

参考URL:
http://www1.cts.ne.jp/~clab/hsample/Func/Func08.html
hororo06
質問者

補足

アドバイスありがとうございます strtokですか…。見てみましたがこの関数はまだ習ってません。 多分これを使わなくてもできるのだと思うのですが、なにかいい方法はありませんか?

関連するQ&A