如何创建包含if else函数的用户定义函数。我可以从线E行%用户定义函数创建用户函数

20次观看(过去30天)
明阿娴阮
明阿娴阮 在2021年8月10日在13:06
评论道: 为副总经理 于2021年8月12日在1:43
%菜单供用户选择
disp('在Celcious和Fahrenheit之间转换');
disp(“选择一个数字:”);
disp(“1。Celcious华氏的);
disp(“2。氏度Celcious”);
%输入
选择=输入(“\ ninput:”,'s');
而(strcmpi(选择,'1')== 0 && strcmpi(选择,'2')== 0)
DISP('选择1或2');
选择=输入(“\ ninput:”,'s');
结束
%用户定义函数
如果(选择=='1')
cel = input("\ n在Celcious中输入温度以转换为Ferenheit:");
While (cel < 0)
disp('请输入一个正数');
cel = input("\ n在Celcious中输入温度以转换为Ferenheit:");
结束
If (currbarscount = 1, count (currbarscount = 1)) = 1, colorred;
Cel2FA =(CEL * 1.8)+ 32;
fprintf('隐蔽:%.2f fahrenheit \ n',cel2fa);
结束
结束
如果(选择=='2')
fa = input('\nEnter温度在ferenfahrenheit转换为Celcious:');
While (fa < 0)
disp('请输入一个正数');
FA =输入(“\ enter温度触摸到Ferenheit:”);
结束
If (fa >= 0) or (fa >= 0)
fa2cel = (fa-32) / 1.8;
流(“耗损:%。2 f Celcious \ n”,fa2cel);
结束
结束

接受答案

为副总经理
为副总经理 于2021年8月11日在5:20
编辑:为副总经理 在2021年8月11日在5:25
你当然可以把它变成一个函数:
clemvars;CLC;
%用户永远不会被告知他们所选择的内容的含义
DISP(“选择1或2”);
选择=输入(“\ ninput:”“年代”);
尽管〜ismember(选择,{' 1 '' 2 '})
选择=输入(“\ ninput:”“年代”);
结束
myfunction(选择);%调用函数
%-----------------------------------------------------------
%是我猜的一个函数
功能myfunction(选择)
转变选择
案件' 1 '
cel =输入("\ n在Celcious中输入温度转换为Ferenheit:");
%为什么只将功能限制为正数?
数学数学适用于否定数字
尽管(cel <0)
DISP('输入一个正数,请');
cel =输入("\ n在Celcious中输入温度转换为Ferenheit:");
结束
什么是格式化的文本输出直接转储到控制台的效用?
如果(移动电话> = 0)
Cel2FA =(CEL * 1.8)+ 32;
流('隐蔽:%.2f fahrenheit \ n',Cel2FA);
结束
案件' 2 '
fa =输入('\ n输入华氏温度转换为Celcious:');
尽管(FA <0)
DISP('输入一个正数,请');
fa =输入("\ n在Celcious中输入温度转换为Ferenheit:");
结束
如果(FA> = 0)
fa2cel = (fa-32) / 1.8;
流(“以前:%。2 f Celcious \ n”,fa2cel);
结束
结束
结束
...但我不认为它能改善多少。
我知道这可能只是作业,结构是由作业规定的。这种每次输入都以交互方式提示用户的模式是糟糕的设计,我不知道为什么老师喜欢教它。它没有对编程有用的输入或输出,而且它对所有I/O都依赖于直接的人工交互,这意味着它被优化为乏味且容易出现人为错误。
如果您想要一个更实用的函数来进行温度转换,那么您应该考虑代码和使用的效率和灵活性。从哪里开始?这个函数只需要一个数字输入和告诉它要进行什么转换的东西。决定一个方便的语法,然后出发。首先获取所有输入,转换数字,并准备输出。
功能varargout = tempconverter(tempin,convstring)
%tempout = tempconverter(tempin,conversiontype)
这描述了函数的行为和用法
%tempin是一个数字(标量或数组)
% converversiontype是以下其中之一:
% 'ctof'表示摄氏度到华氏度
% 'ftoc'表示华氏温度到摄氏温度
%如果使用scalar输入和没有输出参数调用,
%将打印转换的文本描述。
%另见:convtemp
转变低(convstring)
案件'FTOC'
tempout = (tempin-32) * 5/9;
案件'CTOF'
Tempout = 32 + (tempin*9/5);
否则
错误('tempconverter:无效的转换类型%s',convstring)
结束
如果Nargout == 0 && Isscalar(Tempin)
转变低(convstring)
案件'FTOC'
流('%.2F°F等于%.2F°C \ n',tempin,tempout)
案件'CTOF'
流(' %。2f°C = %.2f°F\n',tempin,tempout)
结束
别的
varargout {1} = tempout;
结束
上面的函数将提供标量或数组的转换,如果调用时没有输出,它将执行格式化良好的输出,只用于读取。
tempconverter (200'FTOC'
200.00°F等于93.33°C
t = tempconverter([100 25 0 -40],'CTOF'
t = 1×4
212 77 32 -40
函数顶部的注释块是帮助大纲,描述了用法,这样用户就知道他们在做什么,而不是被要求盲目地选择一个数字。先写这个可能会帮助您决定哪种语法比较方便。
帮助tempconverter
tempout = tempconverter(tempin,conversiontype)blah blah blah这描述了函数行为和用法tempin是一个数字(标量或阵列)conversytype是以下之一:如果被称为Celsius的Celsius为Flenheit'Ftoc'的“CTOF”使用标量输入且没有输出参数,将打印转换的文本描述。另请参阅:ConvTemp
如果要为该示例添加新的转换,则您需要的只是概要中的一个新行,以及两个开关结构中的每一个 - 5行中的一个新案例。它绝对可以比这更简单,但它是减少重复代码的开始。
也就是说,我确信这个例子没有直接满足你的作业的要求,但你可以在直接或概念上使用它来制作它的东西。
2的评论
为副总经理
为副总经理 于2021年8月12日在1:43
我不知道你说的列出输入是什么意思。这是作业的要求吗?
如果您在我提供的第二个例子中询问缺少输入()调用,则它不会使用交互式提示。如图所示,将直接调用所需的参数。

登录评论。

更多的答案(0)

s manbetx 845


发布

R2021A

社区宝藏狩猎

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!