Pascal 语言中字符与字符串

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

【敲代码】
  1. //网友代码
    
    var
    
     article,w:string;
    
     arr:array[1..255] of string;
    
     i,len,ans:longint;
    
    function check(w:string):boolean;
    
    var
    
     i:longint;
    
    begin
    
    if len=0 then exit(true);
    
    for i:=1 to len do
    
    if arr[i]=w then exit(false);
    
     exit(true);
    
    end;
    
    begin
    
     readln(article);
    
     article:=upcase(article);//将所有字符转换为大写,解决 the=The 问题
    
    while(article[1]<'A')or(article[1]>'Z')do
    
    delete(article,1,1);
    
    while length(article)>0do
    
     begin
    
     i:=1;
    
    while(article[i]>='A')and(article[i]<='Z')do
    
     inc(i);
    
     w:=copy(article,1,i-1);
    
    delete(article,1,i);
    
    if check(w) then
    
     begin
    
     inc(len);
    
     arr[len]:=w;
    
     inc(ans);
    
     end;
    
    while(article[1]<'A')or(article[1]>'Z')do
    
    delete(article,1,1);
    
     end;
    
     writeln(ans);
    
    end.

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

  1. //空格分隔单词,每一个单词分别读入 string 数组中
    
    i:=1;
    
    j:=1;
    
    read(a[1]);//读入第一个字符
    
    while a[i]<>'.'do;//a数组为char型
    
    begin
    
     inc(i);
    
     read(a[i]);
    
    end;
    
    t:=i;//a数组中内容个数
    
    for i:=1 to t do
    
    if(a[i]<>' ')and(a[i]<>'.') then sen[j]:=sen[j]+a[i]
    
    else inc[j];//空格分隔处理
    
    j:=j-1;//在最后一个'.'后j会+1,但并没有存放数据,所以这里要减去1
    //去重复
    
    n:=j;//下面要用j做循环,所以把j保存在n中
    
    count:=j;//count是最后要输出的结果
    
    for i:=1 to n-1do
    
    for j:=i+1 to n do
    
    if(a[i]=a[j])and(i<>j) then dec(count);//去除重复

     

你可能感兴趣的:(pascal)