Updating variable after each loop iteration

13 次查看(过去 30 天)
Hello everyone, I am almost new in matlab. I am trying to update my variable according to user's input. I want every letter I entered match with the generated_word, the letter will earse; in such way that promt(1)='m' will give newChr(1)='atlabcounity'; promt(2)='a' will give newChr(2)=tlbcounity'; promt(3)='t' will give newChr(3)='lbcouniy' and so on.
Here is the code that I have tried to run but its not working in my favor:
generated_word='matlabcommunity'
promt=[]:
newChr=[];
for i=1:length(generated_word)
promt(i)=input("Enter: ",'s');
% delete the correct input's letters from the generated word
newChr=erase(generated_word,promt(i));
disp(newChr)
if promt == 'x'
break
end
end
disp(newChr)

采纳的回答

Walter Roberson
Walter Roberson 2022-4-25
generated_word='matlabcommunity'
promt = strings(0):
newChr=[];
for i=1:length(generated_word)
promt(i)=input("Enter: ",'s');
if promt(i) == 'x'
break
end
% delete the correct input's letters from the generated word
newChr=erase(generated_word,promt(i));
disp(newChr)
generated_word = newChr;
end
disp(newChr)
Caution: your code has a bug for the case where the input word contains the same letter multiple times.
  2 个评论
Walter Roberson
Walter Roberson 2022-4-25
generated_word='matlabcommunity'
generated_word = 'matlabcommunity'
erase(generated_word, 'm')
ans = 'atlabcounity'
Notice that "erase" removes all occurances of the same letter. If you want to remove only the first occurence then either you should use a different function, or else you should arrange so that the bit to be erased matches only one place, by carefully generating a patternarray() such as by using anchors. You might want to reconsider using erase(). For example
regexprep(generated_word, 'm', '', 'once')
ans = 'atlabcommunity'
Dinh Phuc Nguyen
Dinh Phuc Nguyen 2022-4-25
Thank you for your help!!! I'm very much appreciate this!!

请先登录,再进行评论。

更多回答(1 个)

KSSV
KSSV 2022-4-25
generated_word='matlabcommunity' ;
newChr=[];
promt = cell(length(generated_word),1) ;
for i=1:length(generated_word)
promt{i}=input("Enter: ",'s');
% delete the correct input's letters from the generated word
newChr=erase(generated_word,promt{i});
disp(newChr)
if strcmp(promt{i},'x')
break
end
end
disp(newChr)
  1 个评论
Dinh Phuc Nguyen
Dinh Phuc Nguyen 2022-4-25
Thank you for answearing my question, but the code is not really updated the genereated_word every iteration like promt(1)='m' will give newChr(1)='atlabcounity'; promt(2)='a' will give newChr(2)=tlbcounity'

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

产品


版本

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by