0

私は matlab で電卓を作成しています。sin ボタンが押されたときに、編集ボックスから最後の入力番号を取得し、sin() ブラケットに入れたいと考えています。どうやってするか?数時間検索しましたが、何も見つかりませんでした。

sin ボタンのコードは次のようになります。

  % --- Executes on button press in pushbutton40.
function pushbutton40_Callback(hObject, eventdata, handles)
inpfieldtxt = get(handles.edit1,'string');
if(strcmp(inpfieldtxt,'0.')==1)
    set(handles.edit1,'String','sind(');
else
    inpfieldtxt=strcat(inpfieldtxt,'sind(');
    set(handles.edit1,'String',inpfieldtxt)
end

「sind(」を編集ボックスに挿入するだけで、数字と閉じ括弧「)」を手動で入力する必要があります。

このボタンを Windows 7 電卓の sin ボタンとして反応させたいです。また、最後の番号を取得し、それをsin(ここ)に入れます。

わかった!ここに解決策があります:

% --- Executes on button press in pushbutton40.
function pushbutton40_Callback(hObject, eventdata, handles)
inpfieldtxt = get(handles.edit1,'string');
if(strcmp(inpfieldtxt,'0.')==1)
    set(handles.edit1,'String','sind(');
else
    isNumber = (inpfieldtxt >= '0') & (inpfieldtxt <= '9');
    i=length(inpfieldtxt);
    while (i > 0) && (isNumber(i))
        if isNumber(i)
            i = i-1;
        end
    end
    lastnmb = inpfieldtxt(i+1:end);
    inpfieldtxt = inpfieldtxt(1:i);
    set(handles.edit1,'String',[inpfieldtxt,'sind(',lastnmb,')']);
end

助けてくれてどうもありがとう!

4

1 に答える 1

0

ivedlauktxt(end)最後の文字を与える

考え直して、あなたは調べたいと思うかもしれませんstr2num()

編集:

あなたが探している特定のものを考えると、これはそれを行う方法かもしれません:

isNumber = (ivedlauktxt >= '0')  & (ivedlauktxt <= '9')
i=length(ivedlauktxt); %Initialize loop
while i>0   && (isNumber(i))
   if isNumber(i)
      i=i-1;
   end
end

str2num( ivedlauktxt(i+1:end) ) 

それをテストしませんでしたが、それはあなたをそこに連れて行くはずです!

于 2012-11-12T16:30:35.890 に答える