Azzera filtri
Azzera filtri

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

4 visualizzazioni (ultimi 30 giorni)
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 Commento
Stephen23
Stephen23 il 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?:

Accedi per commentare.

Risposta accettata

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

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by