2

特定の文字で始まるテキスト (ユーザー入力) の単語数を検出するプログラムを Pascal で作成する必要があります。配列を使用できません。どこから始めればよいかヒントを教えてください。

4

5 に答える 5

3

どの文字かわかっている場合は、カウンターを保持するだけでよく、配列は必要ありません。

どの文字かわからない場合は、26 個のカウンターを保持します。ばかげていますが、仕様どおりに動作します。

于 2009-10-07T04:05:29.940 に答える
0

(S) は入力文字列です。

  1. 1 から (S) - 1 の長さまでの for ループを作成します。
  2. ループ内では、チェックは (S)[i] = ' ' および (S)[i+1] = 't' です。ここで、i はループ カウンターで、't' はカウントする単語の先頭の文字です。
  3. ステップ 2 の条件が一致する場合は、カウンターをインクリメントします。

ループ サイズのマイナス 1 に注意してください。

また、文字列の最初の文字は、一致させたい文字である可能性があり、上記で定義したループでは検出されないことに注意してください。

ハードコードされた「t」ではなく特定の文字を見つけることができるという点でコードをよりスマートにする必要がある場合は、要求された文字をパラメーターとしてループが含まれる関数/プロシージャに渡すことができます。

于 2009-10-07T11:57:12.487 に答える
0

一致する場合は、SPACE LETTER と最初の単語のインスタンスをカウントします。

于 2009-10-07T11:42:09.387 に答える
-2

私の頭の上から - テストされていません

function WordCount(const S: string; const C: Char): Integer;
const
  ValidChars: Set of Char [A..Z, a..z]; // Alter for appropriate language
var
  i : Integer;
  t : string;
begin
  Result := 0;
  if Length(S) <> 0 then
  begin
    t := Trim(S); // lose and leading and trailing spaces
    t := t + ' '; // make sure a space is the last char
    repeat
      if (t[1] in ValidChars) and (t[1] = C then
        inc(Result);
      i := Pos(' ', t);
      t := Copy(t(i+1, Length(t));
    until Length(t) = 0;
  end;
end;

なぜ配列や case ステートメントが必要なのですか?

于 2009-10-15T08:53:28.853 に答える