特定の文字で始まるテキスト (ユーザー入力) の単語数を検出するプログラムを Pascal で作成する必要があります。配列を使用できません。どこから始めればよいかヒントを教えてください。
3729 次
5 に答える
3
どの文字かわかっている場合は、カウンターを保持するだけでよく、配列は必要ありません。
どの文字かわからない場合は、26 個のカウンターを保持します。ばかげていますが、仕様どおりに動作します。
于 2009-10-07T04:05:29.940 に答える
0
(S) は入力文字列です。
- 1 から (S) - 1 の長さまでの for ループを作成します。
- ループ内では、チェックは (S)[i] = ' ' および (S)[i+1] = 't' です。ここで、i はループ カウンターで、't' はカウントする単語の先頭の文字です。
- ステップ 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 に答える