matlab求助!看看这个if语句有什么bug!
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/14 00:25:57
matlab求助!看看这个if语句有什么bug!
disp('这是个计算电动力的程序,可以自动计算矩形,圆形截面的简支,两端固定方式的导线的电动力,其它截面自己算好W在写进去')
Im=input('输入冲击电流Im=?A')
l=input('导线长度l=?mm')
a=input('导线间距a=?mm')
Fm=2.8*10^(-7)*2*(sqrt(l^2+a^2)-a)*(Im/1.8)^2/a;
shap=input('输入截面形状,如矩形输入R,圆形输入C,其它截面形状请直接输入W值:','s')
method=input('输入支承方式,简支输入j,两端固定输入g','s')
if shap=='R'
b=input('输入矩形截面的宽度b')
h=input('输入矩形截面的高度h')
w=b*h^2/6
else if shap=='C'
d=input('输入圆截面直径')
w=pi*d^3/32
else
w=str2num(shap)
end
if method=='j'
v=Fm*l/4/w
else if method=='g'
v=Fm*l/24/w
else
disp('算不出行不?')
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
程序如上!当截面选择矩形时算不出v值来的!
disp('这是个计算电动力的程序,可以自动计算矩形,圆形截面的简支,两端固定方式的导线的电动力,其它截面自己算好W在写进去')
Im=input('输入冲击电流Im=?A')
l=input('导线长度l=?mm')
a=input('导线间距a=?mm')
Fm=2.8*10^(-7)*2*(sqrt(l^2+a^2)-a)*(Im/1.8)^2/a;
shap=input('输入截面形状,如矩形输入R,圆形输入C,其它截面形状请直接输入W值:','s')
method=input('输入支承方式,简支输入j,两端固定输入g','s')
if shap=='R'
b=input('输入矩形截面的宽度b')
h=input('输入矩形截面的高度h')
w=b*h^2/6
else if shap=='C'
d=input('输入圆截面直径')
w=pi*d^3/32
else
w=str2num(shap)
end
if method=='j'
v=Fm*l/4/w
else if method=='g'
v=Fm*l/24/w
else
disp('算不出行不?')
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
程序如上!当截面选择矩形时算不出v值来的!
看了你程序的大概的思路,除了输入数据之外,余下的就是先算出w来,然后计算v.那么,计算v的if语句应该在程序的最顶层,不应嵌套在前面的if语句中. 改后的代码(主要是第12行之后):disp('这是个计算电动力的程序,可以自动计算矩形,圆形截面的简支,两端固定方式的导线的电动力,其它截面自己算好W在写进去')
Im=input('输入冲击电流Im=?A')
l=input('导线长度l=?mm')
a=input('导线间距a=?mm')
Fm=2.8*10^(-7)*2*(sqrt(l^2+a^2)-a)*(Im/1.8)^2/a;
shap=input('输入截面形状,如矩形输入R,圆形输入C,其它截面形状请直接输入W值:','s')
method=input('输入支承方式,简支输入j,两端固定输入g','s')
if shap=='R'
b=input('输入矩形截面的宽度b')
h=input('输入矩形截面的高度h')
w=b*h^2/6
elseif shap=='C'
d=input('输入圆截面直径')
w=pi*d^3/32
else
w=str2num(shap)
end
if method=='j'
v=Fm*l/4/w
elseif method=='g'
v=Fm*l/24/w
else
disp('算不出行不?')
end其中,值得提醒楼主的是,MATLAB有elseif关键字,在多个条件分支的情况下,比起用else if写出来的代码要更清晰、简洁,减少失误的可能.
Im=input('输入冲击电流Im=?A')
l=input('导线长度l=?mm')
a=input('导线间距a=?mm')
Fm=2.8*10^(-7)*2*(sqrt(l^2+a^2)-a)*(Im/1.8)^2/a;
shap=input('输入截面形状,如矩形输入R,圆形输入C,其它截面形状请直接输入W值:','s')
method=input('输入支承方式,简支输入j,两端固定输入g','s')
if shap=='R'
b=input('输入矩形截面的宽度b')
h=input('输入矩形截面的高度h')
w=b*h^2/6
elseif shap=='C'
d=input('输入圆截面直径')
w=pi*d^3/32
else
w=str2num(shap)
end
if method=='j'
v=Fm*l/4/w
elseif method=='g'
v=Fm*l/24/w
else
disp('算不出行不?')
end其中,值得提醒楼主的是,MATLAB有elseif关键字,在多个条件分支的情况下,比起用else if写出来的代码要更清晰、简洁,减少失误的可能.