How do I prompt for a variable in one script and use it in another
2 views (last 30 days)
Show older comments
My first script which prompts the user is as follows
%this main script calls to one main function(isPalindrome) with a subfunction(removeNonAlpha)
%this script prompts the user for a character vector to test for being a
% palindrome
fprintf('A palindrome is a word, phrase, or sequence that reads the same backward as forward\n')
str=input('Enter text to test for palindrome:','s');
welp=isPalindrome;
if welp==1
fprintf('Heyy!! %s is a palindrome :) ',str)
else
fprintf('Dang :( %s is not a palindrome ',str)
end
The function that the first script calls is as follows
%this function tests whether a character vector is a palindrome
function Welp=isPalindrome(~)
strrevised=removeNonAlpha(str);
if strrevised==fliplr(strrevised)
Welp=1;
else
Welp=0;
end
end
function strrevised=removeNonAlpha(str)
%this function takes in a string and revises it to remove blanks and to
%remove numbers ie take only alpha characters
str2=isletter(str);
strrevised=str(str2);
end
when I run my program i get the error "unrecognized function or variable 'str' "
how can i make it recognize the first variable in the function the script calls
second question (kind of)how can I make welp=1 if my character vector is blank ie if str=[] because right now it would delete a blank vector because it's not a letter.
PSA sorry this question is a lot lol
1 Comment
Stephen23
on 28 Nov 2023
"how can i make it recognize the first variable in the function the script calls "
Why not simply pass WELP as an input argument, just as the MATLAB documentation recommends?:
Accepted Answer
Walter Roberson
on 27 Nov 2023
After the line
function Welp=isPalindrome(~)
insert
str = evalin('caller', 'str');
or
str = evalin('base', 'str');
Neither of these is recommended. Recommended would be to have used
welp=isPalindrome(str);
with
function Welp=isPalindrome(str)
2 Comments
Walter Roberson
on 27 Nov 2023
For your second question:
change
if strrevised==fliplr(strrevised)
to
if isequal(strrevised, fliplr(strrevised))
Where comparing '' == fliplr('') gives an empty logical result, using isequal() gives 1 (true)
More Answers (0)
See Also
Categories
Find more on Performance and Memory in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!