Pascal 如何找到给定字符串中的字数?
我在用Pascal计算给定字符串中的字数 这是我的第一个女同事:Pascal 如何找到给定字符串中的字数?,pascal,freepascal,turbo-pascal,Pascal,Freepascal,Turbo Pascal,我在用Pascal计算给定字符串中的字数 这是我的第一个女同事: Program P1; var s:string; i,k:integer; begin write('Enter a string: '); readln(s); k:=0; for i:=1 to length(s) do begin if(s[i] = ' ') then k:=k+1; end; write('Number of words ', k
Program P1;
var s:string;
i,k:integer;
begin
write('Enter a string: '); readln(s);
k:=0;
for i:=1 to length(s) do
begin
if(s[i] = ' ') then k:=k+1;
end;
write('Number of words ', k);
end.
您可以使用两种状态(“内部单词”和“单词分隔符”)来实现该程序:
程序P1;
类型TState=(单词内,单词分隔符);
var-s:字符串;
i、 k:整数;
国家:TState;
开始
write('输入字符串:');readln(s);
k:=0;
状态:=字分隔符;
对于i:=1到长度do
开始
案件状态
内词:
开始
如果(s[i]='',则状态:=字分隔符;
终止
单词分隔符:
开始
如果(s[i]”,则开始
k:=k+1;
状态:=内部单词;
终止
终止
终止
终止
书写('字数',k);
终止
这里有一个解决方案,它将每个非字母视为单词分隔符:
Program P1;
type TState = (INSIDE_WORD, WORD_SEPARATOR);
var s:string;
i,k:integer;
state: TState;
begin
write('Enter a string: '); readln(s);
k:=0;
state := WORD_SEPARATOR;
for i:=1 to length(s) do
begin
case state of
INSIDE_WORD:
begin
if (s[i] = ' ') then state := WORD_SEPARATOR;
end;
WORD_SEPARATOR:
begin
if (s[i] <> ' ') then begin
k:=k+1;
state := INSIDE_WORD;
end;
end;
end;
end;
write('Number of words ', k);
end.
PROGRAM P1;
VAR
wordCount: Integer;
insideWord, letterRead: Boolean;
ch: Char;
BEGIN
wordCount := 0;
insideWord := FALSE;
Write('Enter a string: ');
Read(ch);
WHILE NOT EoLn DO BEGIN
letterRead := (ch >= 'A') AND (ch <= 'Z') OR (ch >= 'a') AND (ch <= 'z');
IF NOT insideWord AND letterRead THEN
Inc(wordCount);
insideWord := letterRead;
Read(ch)
END;
WriteLn('Number of words: ', wordCount)
END.
程序P1;
变量
字数:整数;
insideWord,字母:布尔;
ch:Char;
开始
字数:=0;
insideWord:=假;
Write('输入字符串:');
Read(ch);
当你还没有开始的时候
letterRead:=(ch>='A')和(ch='A')和(ch在自由帕斯卡中,结构单元中有一个函数:
uses strutils;
var s : string;
begin
write('Enter a string: '); readln(s);
writeln('Number of words: ',wordcount(s,[' ','.',',']));
end;
这是怎么失败的?你有没有试着“桌面检查”你的代码,假装是一台哑计算机,并像计算机一样执行程序的每一步?@JeffZeitlin在这件事上,程序只有在找到一个空格字符时才算,例如,如果我有字符串“我有4个苹果”计算的单词总数为3个,因为只有3个空格。也许你需要做的是(a)完善你如何定义一个单词,以及(b)找出你可以做什么来解释一个不以空格结尾的单词。这两个问题实际上是紧密相连的。你可能会发现并变得有用。你看到了吗?