Filter löschen
Filter löschen

How do I prompt for a variable in one script and use it in another

4 Ansichten (letzte 30 Tage)
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 Kommentar
Stephen23
Stephen23 am 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?:

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 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 Kommentare
Walter Roberson
Walter Roberson am 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)
Will
Will am 27 Nov. 2023
the second method works well. thank you, much appreciated :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by