【题目】输入一段文章(255个字符以内),求文章中单词的个数,相同单词只记一次,The 和 the 视作相同。
【敲代码】
-
//网友代码
var
article,w:string;
arr:array[..] of string;
i,len,ans:longint;
function check(w:string):boolean;
var
i:longint;
begin
if len= then exit(true);
for i:= to len do
if arr[i]=w then exit(false);
exit(true);
end;
begin
readln(article);
article:=upcase(article);//将所有字符转换为大写,解决 the=The 问题
while(article[]<'A')or(article[]>'Z')do
delete(article,,);
while length(article)>0do
begin
i:=;
while(article[i]>='A')and(article[i]<='Z')do
inc(i);
w:=copy(article,,i-);
delete(article,,i);
if check(w) then
begin
inc(len);
arr[len]:=w;
inc(ans);
end;
while(article[]<'A')or(article[]>'Z')do
delete(article,,);
end;
writeln(ans);
end.下面是我对这道题的解决办法,只提供一些步骤:
-
//空格分隔单词,每一个单词分别读入 string 数组中
i:=;
j:=;
read(a[]);//读入第一个字符
while a[i]<>'.'do;//a数组为char型
begin
inc(i);
read(a[i]);
end;
t:=i;//a数组中内容个数
for i:= to t do
if(a[i]<>' ')and(a[i]<>'.') then sen[j]:=sen[j]+a[i]
else inc[j];//空格分隔处理
j:=j-;//在最后一个'.'后j会+1,但并没有存放数据,所以这里要减去1//去重复
n:=j;//下面要用j做循环,所以把j保存在n中
count:=j;//count是最后要输出的结果
for i:= to n-1do
for j:=i+ to n do
if(a[i]=a[j])and(i<>j) then dec(count);//去除重复