2014-04-28 93 views
0

如果第一个字符串是Hello1 World,第二个必须是(Hello)1(World),但是我有(Hello)1()(World),我只需要在括号out必须使数字不在括号()数字是括号后(),我不需要。 如何解决这里是我的代码:我只需要括号中的字母

program task2; 
uses crt; 
var str,name:string; 
str2:^string; 
i:integer; 

begin 
clrscr; 


writeln('Enter string!'); 
writeln; 

readln(str); 
writeln; 

New(str2); 
str2^:=''; 
name:=''; 

for i:=1 to length(str) do 
if ((str[i]=' ') or (str[i]>='0') and (str[i]<='9')) then 
       begin 
       str2^:=str2^+'('+name+')'+str[i]; 
       name:=''; 
       end 
      else name:=name+str[i]; 
str2^:=str2^+'('+name+')'; 

writeln('First string: ',str); 
writeln('String length is ',length(str)); 
writeln; 
writeln('Second string: ',str2^); 
writeln('String length is ',length(str2^)); 

readln; 
end. 

谢谢。

回答

0

那么问题是,即使当“名称”为空时,您也会追加“名称”。 只需添加if length(name)>0这样的:

program task2; 
uses crt; 
var str,name:string; 
str2:^string; 
i:integer; 

begin 
clrscr; 


writeln('Enter string!'); 
writeln; 

readln(str); 
writeln; 

New(str2); 
str2^:=''; 
name:=''; 

for i:=1 to length(str) do 
if ((str[i]=' ') or ((str[i]>='0') and (str[i]<='9'))) then 
    if (length(name)>0) then  
       begin 
       str2^:=str2^+'('+name+')'+str[i]; 
       name:=''; 
       end 
      else 
      else name:=name+str[i]; 
str2^:=str2^+'('+name+')'; 

writeln('First string: ',str); 
writeln('String length is ',length(str)); 
writeln; 
writeln('Second string: ',str2^); 
writeln('String length is ',length(str2^)); 

readln; 
end. 
相关问题