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

📄 cal24.m

📁 用MATLAB开发,一个界面还可以的计算器
💻 M
字号:
function varargout = cal24(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @cal24_OpeningFcn, ...
                   'gui_OutputFcn',  @cal24_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin & isstr(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end

function cal24_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
set(gcf,'Color',[0.925490196078431 0.913725490196078 0.847058823529412]);
set(findobj('tag','texttip'),'backgroundColor',[0.925490196078431 0.913725490196078 0.847058823529412]);
set(gcf,'Position',[285 302 206.25 98.25]);

function varargout = cal24_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function editdisp_CreateFcn(hObject, eventdata, handles)if ispc    set(hObject,'BackgroundColor','white');else    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));endfunction editdisp_Callback(hObject, eventdata, handles)function num1_CreateFcn(hObject, eventdata, handles)if ispc    set(hObject,'BackgroundColor','white');else    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));endfunction num1_Callback(hObject, eventdata, handles)
str1=str2num(get(findobj('tag','num1'),'string'));
if ~isempty(str1)
    if str1>=14
        cancel(gcbo);
    end
else
    set(gcbo,'string','');
end
function num2_CreateFcn(hObject, eventdata, handles)if ispc    set(hObject,'BackgroundColor','white');else    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));endfunction num2_Callback(hObject, eventdata, handles)
str2=str2num(get(findobj('tag','num2'),'string'));
if ~isempty(str2)
    if str2>=14
        cancel(gcbo);
    end
else
    set(gcbo,'string','');
endfunction num3_CreateFcn(hObject, eventdata, handles)if ispc    set(hObject,'BackgroundColor','white');else    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));endfunction num3_Callback(hObject, eventdata, handles)
str3=str2num(get(findobj('tag','num3'),'string'));
if ~isempty(str3)
    if str3>=14
        cancel(gcbo);
    end
else
    set(gcbo,'string','');
end
function num4_CreateFcn(hObject, eventdata, handles)if ispc    set(hObject,'BackgroundColor','white');else    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));endfunction num4_Callback(hObject, eventdata, handles)
str4=str2num(get(findobj('tag','num4'),'string'));
if ~isempty(str4)
    if str4>=14
        cancel(gcbo);
    end
else
    set(gcbo,'string','');
endfunction btncal_Callback(hObject, eventdata, handles)  %计算按钮
set(findobj('tag','figure'),'name','正在进行计算,请稍等 ...');
set(gcf,'pointer','watch');
set(gcbo,'enable','off');

str1=get(findobj('tag','num1'),'string');
str2=get(findobj('tag','num2'),'string');
str3=get(findobj('tag','num3'),'string');
str4=get(findobj('tag','num4'),'string');

if ~isempty(str1)
    if ischar(str1)
        %questdlg();
    elseif str1>=14
    end
end

str(1)=str2num(str1);
str(2)=str2num(str2);
str(3)=str2num(str3);
str(4)=str2num(str4);

%是否算出
calculated=0;
    
%产生各种组合,并进行计算
for i=1:4
    if calculated==0
        for j=1:4
            if j~=i & calculated==0
                for k=1:4
                    if k~=i & k~=j & calculated==0
                        for l=1:4
                            if l~=i & l~=j &  l~=k & calculated==0
                                %不进行括号运算
                                calculated=fcncal24(str(i),str(j),str(k),str(l),findobj('tag','editdisp'),calculated);
                                if calculated==1
                                    break;
                                else
                                    %进行括号运算
                                    stra=strcat('(',num2str(str(i)));
                                    strb=strcat(num2str(str(j)),')');
                                    calculated=fcncal24(stra,strb,str(k),str(l),findobj('tag','editdisp'),calculated);
                                    if calculated==1
                                        break;
                                    else
                                        stra=strcat('(',num2str(str(i)));
                                        strc=strcat(num2str(str(k)),')');
                                        calculated=fcncal24(stra,str(j),strc,str(l),findobj('tag','editdisp'),calculated);
                                        if calculated==1
                                            break;
                                        else
                                            strb=strcat('(',num2str(str(j)));
                                            strc=strcat(num2str(str(k)),')');
                                            calculated=fcncal24(str(i),strb,strc,str(l),findobj('tag','editdisp'),calculated);
                                            if calculated==1
                                                break;
                                            else
                                                strb=strcat('(',num2str(str(j)));
                                                strd=strcat(num2str(str(l)),')');
                                                calculated=fcncal24(str(i),strb,str(k),strd,findobj('tag','editdisp'),calculated);
                                                if calculated==1
                                                    break;
                                                else
                                                    strc=strcat('(',num2str(str(k)));
                                                    strd=strcat(num2str(str(l)),')');
                                                    calculated=fcncal24(str(i),str(j),strc,strd,findobj('tag','editdisp'),calculated);
                                                    if calculated==1
                                                        break;
                                                    else
                                                        stra=strcat('((',num2str(str(i)));
                                                        strb=strcat(num2str(str(j)),')');
                                                        strc=strcat(num2str(str(k)),')');
                                                        calculated=fcncal24(stra,strb,strc,str(l),findobj('tag','editdisp'),calculated);
                                                        if calculated==1
                                                            break;
                                                        else
                                                            stra=strcat('(',num2str(str(i)));
                                                            strb=strcat(num2str(str(j)),')');
                                                            strc=strcat('(',num2str(str(k)));
                                                            strd=strcat(num2str(str(l)),')');
                                                            calculated=fcncal24(stra,strb,strc,strd,findobj('tag','editdisp'),calculated);
                                                            if calculated==1
                                                                break;
                                                            else
                                                                stra=strcat('(',num2str(str(i)));
                                                                strb=strcat('(',num2str(str(j)));
                                                                strc=strcat(num2str(str(k)),'))');
                                                                calculated=fcncal24(stra,strb,strc,str(l),findobj('tag','editdisp'),calculated);
                                                                if calculated==1
                                                                    break;
                                                                else
                                                                    stra=strcat('(',num2str(str(i)));
                                                                    strb=strcat('(',num2str(str(j)));
                                                                    strc=strcat(num2str(str(k)),')');
                                                                    strd=strcat(num2str(str(l)),')');
                                                                    calculated=fcncal24(stra,strb,strc,strd,findobj('tag','editdisp'),calculated);
                                                                    if calculated==1
                                                                        break;
                                                                    else
                                                                        strb=strcat('((',num2str(str(j)));
                                                                        strc=strcat(num2str(str(k)),')');
                                                                        strd=strcat(num2str(str(l)),')');
                                                                        calculated=fcncal24(str(i),strb,strc,strd,findobj('tag','editdisp'),calculated);
                                                                        if calculated==1
                                                                            break;
                                                                        else
                                                                            strb=strcat('(',num2str(str(j)));
                                                                            strc=strcat('(',num2str(str(k)));
                                                                            strd=strcat(num2str(str(l)),'))');
                                                                            calculated=fcncal24(str(i),strb,strc,strd,findobj('tag','editdisp'),calculated);
                                                                            if calculated==1
                                                                                break;
                                                                            end
                                                                        end
                                                                    end
                                                                end
                                                            end
                                                        end
                                                    end
                                                end
                                            end
                                        end
                                    end
                                end
                            elseif calculated==1
                                break;
                            end
                        end
                    elseif calculated==1
                        break;
                    end
                end
            elseif calculated==1
                break;
            end
        end
    elseif calculated==1
        break;
    end
end

if calculated==0
     set(findobj('tag','editdisp'),'string','不好意思,我算不出来,另请高明吧!');
end

set(findobj('tag','figure'),'name','速算24');
set(gcf,'pointer','default');
set(findobj('tag','btncal'),'enable','on');
function btnclose_Callback(hObject, eventdata, handles)  %关闭按钮close;function btnabout_Callback(hObject, eventdata, handles)aboutfunction btndel_Callback(hObject, eventdata, handles)set(findobj('tag','editdisp'),'string','');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -