-1

我一直在努力使这项工作有一段时间了。我需要为学校项目制作一个程序,该程序需要一个字符串并计算其中的对称单词。

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

编辑:我当前的代码

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.
4

1 回答 1

0

你试图一次做所有事情!编程通常是将一个大问题分解为多个更简单问题的练习。

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

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

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

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

请注意,这是伪帕斯卡 - 我尽量不给你一个复制粘贴的答案,所以你会学到

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来检查。

这似乎更容易做到吗?

于 2016-05-17T06:48:26.753 回答