📄 mcaculor.m
字号:
main_win_num=sqrt(main_win_num);
main_win_num_int=(main_win_num*(1e+14)-rem(main_win_num*1e+14,1e+14))/(1e+14);%整数部分
main_win_num_dvi=rem(main_win_num*1e+14,1e+14);%小数部分
main_win_num_str=[int2str(main_win_num_int),'.',int2str(main_win_num_dvi)];
set(h_edit,'string',main_win_num_str);
case 'cnse'%算倒数
h_edit=findobj(0,'tag','MAIN_EDIT');
h_cnse=findobj(0,'tag','MAIN_CNSE');
main_win_num=str2num(get(h_edit,'string'));
if main_win_num==0
set(h_edit,'string','0');
errordlg({'友情提示: 除数不能为零!'},'error');
else
main_win_num=1/(main_win_num);
main_win_num_int=(main_win_num*(1e+14)-rem(main_win_num*1e+14,1e+14))/(1e+14);%整数部分
main_win_num_dvi=rem(main_win_num*1e+14,1e+14);%小数部分
main_win_num_str=[int2str(main_win_num_int),'.',int2str(main_win_num_dvi)];
set(h_edit,'string',main_win_num_str);
end
case 'plus'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_time=findobj(0,'tag','MAIN_PLUS');
h_state=findobj(0,'tag','OPERATION_STATE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
set(h_sequence,'string','0');
h_state_temp=round(str2num(get(h_state,'string')));%取得之前的运算符
operator_one=str2num(get(h_opert,'string'));
operator_temp=str2num(get(h_edit,'string'));
if h_state_temp==1 %之前已按过加号键,则先运算加法,得到的结果赋给第一个被操作数
operator_one=operator_one+operator_temp;
set(h_state,'string','1');%记录当前的运算符是加号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==2 %之前已按过减号键,则先运算减法,得到的结果赋给第一个被操作数
operator_one=operator_one-operator_temp;
set(h_state,'string','1');%记录当前的运算符是加号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==3 %之前已按过乘号键,则先运算乘法,得到的结果赋给第一个被操作数
operator_one=operator_one*operator_temp;
set(h_state,'string','1');%记录当前的运算符是加号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==4 %之前已按过除号键,则先运算除法,得到的结果赋给第一个被操作数
if operator_temp==0
errordlg({'友情提示: 除数不能为零!'},'error');
else
operator_one=operator_one/operator_temp;
set(h_state,'string','1');%记录当前的运算符是加号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
end
elseif h_state_temp==0 %之前没有按过任何操作符键
set(h_state,'string','1');%记录当前的运算符是乘号
set(h_opert,'string',get(h_edit,'string'));%记录当前的第一被操作数
end
case 'minu'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_time=findobj(0,'tag','MAIN_MINU');
h_state=findobj(0,'tag','OPERATION_STATE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
set(h_sequence,'string','0');
h_state_temp=round(str2num(get(h_state,'string')));%取得之前的运算符
operator_one=str2num(get(h_opert,'string'));
operator_temp=str2num(get(h_edit,'string'));
if h_state_temp==1 %之前已按过加号键,则先运算加法,得到的结果赋给第一个被操作数
operator_one=operator_one+operator_temp;
set(h_state,'string','2');%记录当前的运算符是减号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==2 %之前已按过减号键,则先运算减法,得到的结果赋给第一个被操作数
operator_one=operator_one-operator_temp;
set(h_state,'string','2');%记录当前的运算符是减号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==3 %之前已按过乘号键,则先运算乘法,得到的结果赋给第一个被操作数
operator_one=operator_one*operator_temp;
set(h_state,'string','2');%记录当前的运算符是减号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==4 %之前已按过除号键,则先运算除法,得到的结果赋给第一个被操作数
if operator_temp==0
errordlg({'友情提示: 除数不能为零!'},'error');
else
operator_one=operator_one/operator_temp;
set(h_state,'string','2');%记录当前的运算符是减号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
end
elseif h_state_temp==0 %之前没有按过任何操作符键
set(h_state,'string','2');%记录当前的运算符是减号
set(h_opert,'string',get(h_edit,'string'));%记录当前的第一被操作数
end
case 'time'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_time=findobj(0,'tag','MAIN_TIME');
h_state=findobj(0,'tag','OPERATION_STATE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
set(h_sequence,'string','0');
h_state_temp=round(str2num(get(h_state,'string')));%取得之前的运算符
operator_one=str2num(get(h_opert,'string'));
operator_temp=str2num(get(h_edit,'string'));
if h_state_temp==1 %之前已按过加号键,则先运算加法,得到的结果赋给第一个被操作数
operator_one=operator_one+operator_temp;
set(h_state,'string','3');%记录当前的运算符是乘号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==2 %之前已按过减号键,则先运算减法,得到的结果赋给第一个被操作数
operator_one=operator_one-operator_temp;
set(h_state,'string','3');%记录当前的运算符是乘号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==3 %之前已按过乘号键,则先运算乘法,得到的结果赋给第一个被操作数
operator_one=operator_one*operator_temp;
set(h_state,'string','3');%记录当前的运算符是乘号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==4 %之前已按过除号键,则先运算除法,得到的结果赋给第一个被操作数
if operator_temp==0
errordlg({'友情提示: 除数不能为零!'},'error');
else
operator_one=operator_one/operator_temp;
set(h_state,'string','3');%记录当前的运算符是乘号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
end
elseif h_state_temp==0 %之前没有按过任何操作符键
set(h_state,'string','3');%记录当前的运算符是乘号
set(h_opert,'string',get(h_edit,'string'));%记录当前的第一被操作数
end
case 'divd'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_time=findobj(0,'tag','MAIN_DIVD');
h_state=findobj(0,'tag','OPERATION_STATE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
set(h_sequence,'string','0');
h_state_temp=round(str2num(get(h_state,'string')));%取得之前的运算符
operator_one=str2num(get(h_opert,'string'));
operator_temp=str2num(get(h_edit,'string'));
if h_state_temp==1 %之前已按过加号键,则先运算加法,得到的结果赋给第一个被操作数
operator_one=operator_one+operator_temp;
set(h_state,'string','4');%记录当前的运算符是除号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==2 %之前已按过减号键,则先运算减法,得到的结果赋给第一个被操作数
operator_one=operator_one-operator_temp;
set(h_state,'string','4');%记录当前的运算符是除号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==3 %之前已按过乘号键,则先运算乘法,得到的结果赋给第一个被操作数
operator_one=operator_one*operator_temp;
set(h_state,'string','4');%记录当前的运算符是除号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
elseif h_state_temp==4 %之前已按过除号键,则先运算除法,得到的结果赋给第一个被操作数
if operator_temp==0
errordlg({'友情提示: 除数不能为零!'},'error');
else
operator_one=operator_one/operator_temp;
set(h_state,'string','4');%记录当前的运算符是除号
set(h_opert,'string',num2str(operator_one));%记录当前的第一被操作数
set(h_edit,'string',num2str(operator_one));%显示当前的第一被操作数
end
elseif h_state_temp==0 %之前没有按过任何操作符键
set(h_state,'string','4');%记录当前的运算符是乘号
set(h_opert,'string',get(h_edit,'string'));%记录当前的第一被操作数
end
case 'equl'
format long;
h_edit=findobj(0,'tag','MAIN_EDIT');
h_state=findobj(0,'tag','OPERATION_STATE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
operator_one_str=str2num(get(h_opert,'string'));
operator_two_num=str2num(get(h_edit,'string'));
h_state_str=round(str2num(get(h_state,'string')));
if operator_one_str==' '
errordlg({'友情提示: 还没有输入第二操作数!'},'error');
else
operator_one_num=str2num(get(h_opert,'string'));
if h_state_str==1
result=operator_one_num+operator_two_num;
elseif h_state_str==2
result=operator_one_num-operator_two_num;
elseif h_state_str==3
result=operator_one_num*operator_two_num;
else
result=operator_one_num/operator_two_num;
end
set(h_edit,'string',num2str(result));
set(h_sequence,'string','0');
set(h_state,'string','0');
set(h_opert,'string','0');
end
otherwise
disp('nogood');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -