# Ending while loop with an input from the user

18 views (last 30 days)
Guys as i beginner at coding, i need help with ending while loop when the user type 'q'. My codes are below.
clc
clear
syms q
syms a
while a ~= 'q'
a = input('Lutfen tam bolenlerini bulmak istediginiz sayiyi giriniz:')
disp('cikmak icin q tusuna basin.')
tam_bolenler = tambolenler (a)
end
function tambo = tambolenler (a)
if a > 0
y = 1;
tambo(1,y) = [0];
for i=1:a
if (mod(a,i)==0)
tambo(1,y) = i;
y = y+1;
end
end
elseif a < 0
y = 1;
tambo(1,y) = [0];
for i=-a:-1:a
if (mod(a,i)==0)
tambo(1,y) = i;
y = y+1;
end
end
else a==0
print("Bu program 0 degeri icin sonuc vermez...")
end
end

Benjamin Kraus on 23 Jan 2021
Edited: Benjamin Kraus on 23 Jan 2021
I'm going to ignore most of the tambolenler function, because I don't think it is needed to answer your question.
I think you have a few changes you need to make:
1. Remove the calls to syms q and syms a which are probably not doing what you think they are doing.
2. Initialize a as anything you want other than 'q'.
3. You need to tell the input command not to evaluate the user's input before returning the answer to you by adding the s flag, then separately use eval to evaluate the user input.
4. Switch from using ~= to ~isequal. The difference is that ~= is an element-by-element comparison while isqual compares the entire input variables.
a = '';
while ~isequal(a,'q')
a = input('Lutfen tam bolenlerini bulmak istediginiz sayiyi giriniz:','s');
disp('cikmak icin q tusuna basin.')
if a ~= 'q'
a = eval(a); % Convert from a character vector to a number.
tam_bolenler = tambolenler(a);
end
end
Hani Kerem TURKOGLU on 26 Jan 2021
Yes you are right :) Thank you very much!

R2018b

### Community Treasure Hunt

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

Start Hunting!