フィルターのクリア

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

4 ビュー (過去 30 日間)
Will
Will 2023 年 11 月 27 日
コメント済み: Stephen23 2023 年 11 月 28 日
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 件のコメント
Stephen23
Stephen23 2023 年 11 月 28 日
"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?:

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2023 年 11 月 27 日
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 件のコメント
Walter Roberson
Walter Roberson 2023 年 11 月 27 日
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 2023 年 11 月 27 日
the second method works well. thank you, much appreciated :)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by