Pascal 语言中字符与字符串

时间:2024-08-09 12:37:50

【题目】输入一段文章(255个字符以内),求文章中单词的个数,相同单词只记一次,The 和 the 视作相同。

【敲代码】
  1. //网友代码
    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.

    下面是我对这道题的解决办法,只提供一些步骤:

  1. //空格分隔单词,每一个单词分别读入 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);//去除重复