⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcaculor.m

📁 matlab写的计数器例子 这是适于初学者掌握matlab深成次开发的一个很好的教学实例
💻 M
📖 第 1 页 / 共 3 页
字号:
        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 + -