闫世军 neu
2008-05-07, 16:34
%化简序列,当多个H相连时,将其看作一个H,并把H中间的的C去掉;
%多个C相连时,将其看作一个C
%E和H之间的C也可以去掉
clear;
clc;
fprintf('input the sequence:\n');
sequ=input(' ','s');
k=length(sequ);
%把H中间的C去掉,H和E之间的C去掉,E和H之间的C去掉
while i<=k
if i==1&sequ(i)=='C'
for j=1:k-i
if sequ(i+j)=='C'
continue;
else break;
end
end
i=i+j;
elseif sequ(i)=='H'%----------------------------------------------------第19行
for j=1:k-i
if sequ(i+j)=='C'
continue;
else break;
end
end
if i+j>k
sequ=sequ;
else
sequ=strcat(substring(sequ,0,i-1),substring(sequ,i+j-1));
i=i+1;
k=length(sequ);
end
elseif sequ(i)=='E'
for j=1:k-i
if sequ(i+j)=='C'
continue;
elseif sequ(i+j)=='H'
break;
end
end
if i+j>k
sequ=sequ;
else
sequ=strcat(substring(sequ,0,i-1),substring(sequ,i+j-1));
i=i+1;
k=length(sequ);
end
elseif sequ(i)==' '
break;
end
end
%把多个H相连和多个C相连分别看作成一个H和一个C
while i<=k
if sequ(i)=='C'
for j=1:(k-j)
if sequ(i)=='C'
continue;
else break;
end
end
if i+j>k
sequ=strcat(substring(sequ,0,i-1),'C');
break;
else
sequ=strcat(substring(sequ,0,i-1),'C',substring(sequ,i+j-1));
i=i+2;
k=length(sequ);
end
else sequ(i)=='H'
for j=1:(k-j)
if sequ(i)=='H'
continue;
else break;
end
end
if i+j>k
sequ=strcat(substring(sequ,0,i-1),'H');
break;
else
sequ=strcat(substring(sequ,0,i-1),'H',substring(sequ,i+j-1));
i=i+2;
k=length(sequ);
end
end
end
运行结果发生错误为: (错误已标出 )
??? Subscript indices must either be real positive integers or logicals.
Error in ==> totalprogram at 19
elseif sequ(i)=='H'%----------------------------------------------------第19行
%多个C相连时,将其看作一个C
%E和H之间的C也可以去掉
clear;
clc;
fprintf('input the sequence:\n');
sequ=input(' ','s');
k=length(sequ);
%把H中间的C去掉,H和E之间的C去掉,E和H之间的C去掉
while i<=k
if i==1&sequ(i)=='C'
for j=1:k-i
if sequ(i+j)=='C'
continue;
else break;
end
end
i=i+j;
elseif sequ(i)=='H'%----------------------------------------------------第19行
for j=1:k-i
if sequ(i+j)=='C'
continue;
else break;
end
end
if i+j>k
sequ=sequ;
else
sequ=strcat(substring(sequ,0,i-1),substring(sequ,i+j-1));
i=i+1;
k=length(sequ);
end
elseif sequ(i)=='E'
for j=1:k-i
if sequ(i+j)=='C'
continue;
elseif sequ(i+j)=='H'
break;
end
end
if i+j>k
sequ=sequ;
else
sequ=strcat(substring(sequ,0,i-1),substring(sequ,i+j-1));
i=i+1;
k=length(sequ);
end
elseif sequ(i)==' '
break;
end
end
%把多个H相连和多个C相连分别看作成一个H和一个C
while i<=k
if sequ(i)=='C'
for j=1:(k-j)
if sequ(i)=='C'
continue;
else break;
end
end
if i+j>k
sequ=strcat(substring(sequ,0,i-1),'C');
break;
else
sequ=strcat(substring(sequ,0,i-1),'C',substring(sequ,i+j-1));
i=i+2;
k=length(sequ);
end
else sequ(i)=='H'
for j=1:(k-j)
if sequ(i)=='H'
continue;
else break;
end
end
if i+j>k
sequ=strcat(substring(sequ,0,i-1),'H');
break;
else
sequ=strcat(substring(sequ,0,i-1),'H',substring(sequ,i+j-1));
i=i+2;
k=length(sequ);
end
end
end
运行结果发生错误为: (错误已标出 )
??? Subscript indices must either be real positive integers or logicals.
Error in ==> totalprogram at 19
elseif sequ(i)=='H'%----------------------------------------------------第19行