please help with work

2 ビュー (過去 30 日間)
Dominic Garcia
Dominic Garcia 2020 年 11 月 18 日
編集済み: Rena Berman 2021 年 5 月 7 日
I have an assignment and I need it done. I am stuck and am very weak with strings...
  4 件のコメント
Rik
Rik 2020 年 11 月 18 日
編集済み: Rik 2020 年 11 月 18 日
Tackle the problem part by part:
"Your program must be able to ask user to enter a variable name"
Did you Google how you can do that?
"and display the user entered name"
Read the documentation for fprintf (or disp)
"check against the above rules"
You can do this two ways: test agains the entire list of allowed characters, or use Matlab functions that test properties of chars.
You get the idea. Which part did you try? Given that it is urgent, you must have already used Google, right?
Rik
Rik 2020 年 11 月 19 日
編集済み: Rena Berman 2021 年 5 月 7 日
Why did you remove the question body?
I'll be posting the removed content from here.

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

採用された回答

Sean de Wolski
Sean de Wolski 2020 年 11 月 18 日
v = ["Not Valid" "Valid"];
v(isvarname(input('enter variable name: ', 's'))+1)
  2 件のコメント
Rik
Rik 2020 年 11 月 18 日
Nice one, a valid solution to the actual problem and very compact. And yet OP will still have to think for themselves to come up with an answer that their instructor will accept. Have an upvote from me.
Sean de Wolski
Sean de Wolski 2020 年 11 月 18 日
I think this would also work elegantly for the engine:
potentialvarnames = ["hello" "he_llo" "2sw" "w?2" "x"];
matches(potentialvarnames, lettersPattern(1)+asManyOfPattern(alphanumericsPattern|characterListPattern("_")))

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

その他の回答 (1 件)

James Tursa
James Tursa 2020 年 11 月 18 日
編集済み: James Tursa 2020 年 11 月 18 日
Use the input( ) function to get the user input. Use the optional 's' argument to get the input as a char string.
I'm assuming you can use the ASCII table provided to decide what range a character is in. Note that numbers and letters are in contiguous sections, which allows you to do the following:
Suppose you have stored the user input in a variable called vname. Then
vname(1) >='A' && vname(1) <= 'Z'
would check to see if the first character is an uppercase letter.
vname(1) >='a' && vname(1) <= 'z'
would check to see if the first character is a lowercase letter.
vname(1) >='0' && vname(1) <= '9'
would check to see if the first character is a decimal digit.
vname(1)=='_'
would check to see if the first character is an underscore
Etc.
See if you can write some looping code based on the number of characters in vname to check all of this.
  2 件のコメント
Dominic Garcia
Dominic Garcia 2020 年 11 月 18 日
thank you. I am progressing through now, but am still unsure on how to check if any element in my string is a letter or number
e.g. i need to check if it contains any numbers, what would it be in that case, because vname() would just produce all characters.
James Tursa
James Tursa 2020 年 11 月 18 日
The basic idea would be to write a loop:
for k=1:numel(vname)
% code to check the vname(k) character here
end

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

カテゴリ

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by