我必须在Pascal中编写一个程序,它必须检测文本上的字数(由用户输入)以某个字母开头。我不能使用数组,你能给我一些关于从哪里开始的提示吗?
答案 0 :(得分:3)
如果你知道哪个字母,你只需要保留一个计数器,就不需要数组。
如果您不知道哪个字母,请保留26个计数器。愚蠢,但按照你的规范工作。
答案 1 :(得分:1)
要做的第一件事是定义构成字母的字符集,或者相反哪些字符构成非字母。
编写一个带有字符的函数,并根据该字符是否为字母返回一个布尔值。然后遍历字符串并为每个字符调用它。当你在非字母后面或字符串开头处检测到一个字母时,如果它是目标字母,请递增你的计数器。
答案 2 :(得分:0)
计算SPACE LETTER的实例加上第一个匹配的单词。
答案 3 :(得分:0)
(S)是你的输入字符串;
注意循环大小的减号。
另外,请记住,字符串的第一个字母可能是您想要匹配的字母,并且不会被上面定义的循环拾取。
如果您需要使代码更智能,因为它可以找到特定的字母而不是硬编码的't',那么您可以将请求的字符作为参数传递给循环所在的函数/过程。
答案 4 :(得分:-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语句?