Updating variable after each loop iteration
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dinh Phuc Nguyen
le 25 Avr 2022
Commenté : Dinh Phuc Nguyen
le 25 Avr 2022
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)
0 commentaires
Réponse acceptée
Walter Roberson
le 25 Avr 2022
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 commentaires
Walter Roberson
le 25 Avr 2022
generated_word='matlabcommunity'
erase(generated_word, 'm')
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')
Plus de réponses (1)
KSSV
le 25 Avr 2022
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)
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!