MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Algorithm with inputdlg command

Asked by Jimmy on 19 Nov 2012

¡Hello everyone!, I need your collaboration with this algorithm, this must be written on a script.

• Make a menu that allows the following:

1. Read the name and identification number (ID) of the user.
2. Print the name and the user identification number (ID) on the screen.
3. Indicate whether the user is over or under 30 years old.
4. Exit.

Make use of the CASE structure for this menu and develop each option.

Thanks.

Walter Roberson on 19 Nov 2012

Please show what you have achieved so far.

Jimmy on 19 Nov 2012

Sir, I appreciate all the help, because I don't even know how to start this.

Walter Roberson on 20 Nov 2012

Please edit this question to have a better title, as the current title has no information about what you are trying to do; your title could apply to most questions that are posted here.

Products

No products are associated with this question.

Answer by Image Analyst on 19 Nov 2012

Hints:

1. inputdlg()
2. fprintf()
3. "if" statement
4. return

Image Analyst on 19 Nov 2012

Look in the help. See how the example for inputdlg() asks the user for two entries, just like you want to do? Well, just adapt that code. There are also examples for fprintf(), I'm sure.

Image Analyst on 19 Nov 2012

```prompt = {'Enter matrix size:','Enter colormap name:'};
dlg_title = 'Input for peaks function';
num_lines = 1;
def = {'20','hsv'};
```

that's unusually difficult to adapt? Why can't you just say "Enter your name" instead of "Enter matrix size" and "Enter your age" instead of "Enter colormap name"? Did you try that? To get numbers instead of cells, you might do this:

```theirAge = str2double(answer{2})
```
Jimmy on 22 Nov 2012

This in my actual code and it works, thanks for the hints.

```dlg_prompts = {'Username:','Age:'};
dlg_defaults = {'',''};
opts.Resize = 'on';  % A structure
dlg_ans = inputdlg(dlg_prompts,dlg_title,1,dlg_defaults,opts);
if isempty(dlg_ans) % If I close the menu
else
userage = str2double(dlg_ans(2));
switch logical(true)
case userage < 0 || isnan(userage)
abc=('and you are confused.');
case userage > 30
abc=('and is over 30.');
case userage < 30
abc=('and is under 30.');
otherwise
abc=('.');
end
M = sprintf('The user %s, is years old %d years(s) %s\n',username,userage,abc);
m=msgbox(M);
end
waitfor(m);
```
Answer by Jan Simon on 19 Nov 2012

Reading the "Getting Started" chapters of the documentation is a good point to start from. Then define the problem exactly. E.g. "read the name" could mean reading a handwritten name on a sheet of paper, reading from an USB stick or computer readable batch, from the keyboard of from a list on the hard disk.

The indication whether the user is over or under 30 years old, is not clear also: How do you want to decide this?

Jimmy on 19 Nov 2012

It's like "introduce your name, ID and age" on the fields, then print all of this on screen and the indication whether the user is over or under 30 years old is with the "if" statement and/or using "switch case", finally the program will show: "you're over 30 years old" or "you're under 30 years old".