where is the mistake?

1 view (last 30 days)
abdullah elsalem
abdullah elsalem on 25 Jan 2022
Edited: DGM on 25 Jan 2022
function oo(w)
if isstring(w)
count =0;
while count<15
if strcmp(w(count),'r')
disp('yes')
count=count+1;
end
end
end

Answers (3)

David Hill
David Hill on 25 Jan 2022
Why not just:
w='abcderfrgrhhr';
l=w=='r'
l =
1×13 logical array
0 0 0 0 0 1 0 1 0 1 0 0 1

VBBV
VBBV on 25 Jan 2022
Edited: VBBV on 25 Jan 2022
while count<15
if strcmp(w(count),'r')
disp('yes')
count=count+1;
else
break;% this will exit from while
end
end
Given while condition is good when the count is incremented continuously inside if statement for given input string. If you provide input string such that it doesn't enter if statement then your program becomes frozen without further increment of count variable.
  2 Comments
VBBV
VBBV on 25 Jan 2022
function oo(w)
if isstring(w)
count =0;
while count<15
if strcmp(w(count),'r')
disp('yes')
count=count+1;
else
break;% this will exit from
end
end
end % end if
end % end function
Complete closing end for function and if statements

Sign in to comment.


DGM
DGM on 25 Jan 2022
Edited: DGM on 25 Jan 2022
If you want it to do what your code implies:
w = 'a4jkltr6mramlkrffgajr';
oo(w)
function oo(w)
if isstring(w) % strings are not chars
w = char(w);
end
if ischar(w)
for c = 1:numel(w) % don't use a while loop, don't hard-code variable length
if w(c) == 'r' % don't need strcmp for single char tests
disp('yes') % if all you print is 'yes'
else
disp('no') % then there's no way to know where it occurred
end
end
end
end
If instead you want a function that's actually useful for something, @David Hill already posted a useful answer.
w = 'a4jkltr6mramlkrffgajr';
idx = letterisr(w)
function out = letterisr(w) % use a meaningful name and provide output
if isstring(w) % strings are not chars
w = char(w);
end
if ischar(w)
out = w == 'r';
end
end

Community Treasure Hunt

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

Start Hunting!