如何在字符串中找到对称的单词?

时间:2016-05-17 05:55:42

标签: string pascal symmetric

我一直试图让这项工作暂时搁置一段时间。 我需要为学校项目制作一个程序,它接受一个字符串并在其中计算对称的单词。

里面应该有句子,但任何事都有帮助。无论我尝试什么方法,我似乎无法让它工作。你能救我一下吗?

编辑:我当前的代码

program rocnik;
var text:string;
    word,drow:string[10];
    i,j,k,p1:integer;
    space,sym:boolean;

begin
     p1:=0;
     write('Enter text: ');readln(text);
     if text<>'' then
     begin
          for i:=1 to length(text) do
          begin
               k:=0;
               if space then
               begin
                    j:=0;
                    space:=false;
               end;
               sym:=true;
               if text[i]<>' ' then
               begin
                    j:=j+1;
                    word[j]:=text[i];
               end
               else space:=true;
               if space then
               begin
                    space:=false;
                    for j:=1 to length(word) do
                    begin
                         k:=k+1;
                         drow[k]:=word[j];
                         if drow[k]<>word[j] then sym:=false;
                    end;
               end;
               if space and sym then p1:=p1+1;
          end;
     end
     else writeln('You didnt enter any text');
     writeln('there are ',p1,' symmetrical words in text');
     readln;
end.

1 个答案:

答案 0 :(得分:0)

您尝试一次完成所有事情!编程通常是将一个大问题分解为多个简单问题的练习。

你真的只需要检查每个单词末尾的对称单词。我建议有一个代表当前单词的字符串。当您遇到输入中的每个字符时,请查看它是否为空格。如果它不是空格,则将该字符附加到currentWord字符串变量。

每次遇到空格时,都应检查currentWord是否对称,然后清除currentWord变量。

您的代码会尝试单独跟踪单词的长度。这是在寻找错误。您可以使用length函数向字符串询问其当前长度。

所以你的代码应该归结为:

请注意,这是伪Pascal - 我试图不给你一个复制粘贴的答案,这样你就可以学习

currentWord := ''
for each character do
begin
    if this character is not a space then
        add the character to the currentWord
    else
        if wordIsSymmetrical(currentWord) then
            print word or add to count as needed
        end
        currentWord := ''
    end
end
if currentWord <> '' then
    if wordIsSymmetrical(currentWord) then
        print word or add to count as needed
    end
end

...并添加一个名为wordIsSymmetrical的函数,它只检查我们传递给它的字符串参数。

请注意,最后您可能会遇到一个没有遇到空格的单词。您可以再次使用wordIsSymmetrical进行检查。

这看起来更容易吗?