電卓にメモリ機能をつけるには?

解決


ちゃい  2012-11-05 21:36:39  No: 73550  IP: [192.*.*.*]

超初心者です
今電卓をつくっていて数字のところはできたんですが
メモリ機能ができません
Windows フォームアプリケーションでつくっています
回答よろしくお願いいたします!

編集 削除
επιστημη  URL  2012-11-05 21:54:57  No: 73551  IP: [192.*.*.*]

> 回答よろしくお願いいたします!

...って、質問がどこにも見当たらんのですが。

編集 削除
ちゃい  2012-11-05 23:20:47  No: 73552  IP: [192.*.*.*]

メモリ機能のプログラムをどのようにすればいいでしょうか??

編集 削除
瀬戸っぷ  2012-11-06 01:07:11  No: 73553  IP: [192.*.*.*]

http://oshiete.goo.ne.jp/qa/7781081.html
この関連でしょうかねぇ……。

CLRはよくわからないのでパスですが。

編集 削除
επιστημη  URL  2012-11-06 04:30:02  No: 73554  IP: [192.*.*.*]

> メモリ機能のプログラムをどのようにすればいいでしょうか??

漠然としてて答えようがないっす。

編集 削除
ちゃい  2012-11-06 15:54:36  No: 73555  IP: [192.*.*.*]

m\*メモリ用の変数*\=textBox1->Text;
M+はこんな感じのプログラムかな〜と思って動かしてみるとmが消えずにそのまま数字がでてきます
例えば130を入れてM+を押して5を押すと1305となるんです
どうすればなおるでしょうか?

編集 削除
瀬戸っぷ  2012-11-06 18:06:49  No: 73556  IP: [192.*.*.*]

>例えば130を入れてM+を押して5を押すと1305となるんです

M+またはM-が押された後、数字ボタンが押されたら現在TextBoxに設定されている値は破棄する。
みたいな判定をするフラグを追加して処理すればよいのではないですか?
具体的なコードは…CLR触っていないので掲示出来ませんけど。

フローチャートとかで流れを考えるべきかと思いますが……。

編集 削除
ちゃい  2012-11-06 20:58:16  No: 73557  IP: [192.*.*.*]

>瀬戸っぷさん
それは大体わかるんですよ・・・
でもそのプログラムがかけなくて・・・
なにしろ超!初心者ですから・・・

編集 削除
επιστημη  URL  2012-11-07 04:29:07  No: 73558  IP: [192.*.*.*]

たとえば'='押して答が出た直後に数字入力するときと同じじゃね?

編集 削除
ちゃい  2012-11-07 18:05:21  No: 73559  IP: [192.*.*.*]

はい
そうなんですけどεπιστημηさんがいってるような
仕様じゃないのでわからないんですよ・・・
できればプログラムを教えてください

編集 削除
επιστημη  URL  2012-11-07 22:02:00  No: 73560  IP: [192.*.*.*]

あんたのおうちの間取りもわからんのに増改築できるわけねぇやん。

編集 削除
ちゃい  2012-11-07 22:51:47  No: 73561  IP: [192.*.*.*]

int i;
         if(y2==1){
           cn=cn+1;
                     for(i=0;i<cn;i++){
                   z=10*z;
           }
         }
         if(y2==0)z=z*10;
         z=z+1;//いれたい数字
         if(y2==1){
           for(i=0;i<cn;i++){
             z=z/10;
           }
         }
         textBox1->Text=z.ToString();
数字のプログラムはこんな感じで最初に
int y1;
int y2=0;
int cn=0;
int m;
double z=0;
double w;
int yy;
をして変数宣言してます
0は
           int i;
         if(y2==1){
           cn=cn+1;
                     for(i=0;i<cn;i++){
                   z=10*z;
           }
         }
         if(y2==0)z=z*10;
         if(y2==1){
           for(i=0;i<cn;i++){
             z=z/10;
           }
         }
          if(y2==0)textBox1->Text=z.ToString();
          if(y2==1){
            if(cn==1)textBox1->Text=z.ToString()+L" .0";
            if(cn<1)textBox1->Text=z.ToString()+L"0";
          }

+−×÷は
       if(y1==3){
         z=w+z;
         textBox1->Text=z.ToString();
       }
       if(y1==1){
         z=w*z;
         textBox1->Text=z.ToString();
       }
       if(y1==4){
         z=w-z;
         textBox1->Text=z.ToString();
       }
       if(y1==2){
         z=w/z;
         textBox1->Text=z.ToString();
       }
       y1=1;
       w=z;
       z=0;
       y2=0;
       cn=0;
です
小数点は
                 y2=1;
です

長文失礼しました

編集 削除
επιστημη  2012-11-08 04:30:10  No: 73562  IP: [192.*.*.*]

なにがなにやらさっぱりわからん。

編集 削除
瀬戸っぷ  2012-11-08 08:38:07  No: 73563  IP: [192.*.*.*]

なんというか……さすが超初心者ですね。

コメントもなし、変数の役割も判らないコードでどうにかして下さいと言われても……。

y2ってなんです?
cnってなんですか?
zってどんなものなんですか?などなど…

>+−×÷は
> if(y1==3){
> z=w+z;
> textBox1->Text=z.ToString();
> }
> if(y1==1){
> z=w*z;
> textBox1->Text=z.ToString();
> }
> if(y1==4){
> z=w-z;
> textBox1->Text=z.ToString();
> }
> if(y1==2){
> z=w/z;
> textBox1->Text=z.ToString();
> }

y1に四則演算の種類が入っているんでしょうけど……
これならswitch文で処理するべきでしょうし、1とか謎数字で処理するべきできありません。
enumにするなりdefine定義するなりして可読性をあげるべきです。
# まぁ、このままのコードにしておいて、半年後の自分が読んでみて混乱しないのであればかまわないかもしれませんが。
# ただし、その場合はプログラミングを仕事にするべきではありません。

というワケで……せっかくコードを掲示されても
>あんたのおうちの間取りもわからんのに増改築できるわけねぇやん。
という状況からたいして変わっていないです。


電卓のプログラムなら…検索すると誰かが作った例とかあるんじゃないですかね?
# メモリ計算機能があるかどうかは別にしても。

編集 削除
ちゃい  2012-11-08 15:19:21  No: 73564  IP: [192.*.*.*]

cnは小数点ボタンが押された後、何回数字ボタンが押されたかカウントしています。
y2は小数点ボタンが押されたか判定していて押されればy2は1になって押されてなければ0になります。
zはよくわからないので自分が参考にしているサイトを見てください
http://www.5b.biglobe.ne.jp/~suugaku/vc++kougi/index.html
この第6講にのっています。

編集 削除
ちゃい  2012-11-08 15:24:43  No: 73565  IP: [192.*.*.*]

すいません
上のリンク間違っていました。
http://www5b.biglobe.ne.jp/~suugaku/vc++kougi/index.html

編集 削除
επιστημη  URL  2012-11-08 20:23:00  No: 73566  IP: [192.*.*.*]

なんにせよこんなコード読む気にはならんなー
# ウチの若いモンがこんなもん持ってきたら窓から投げ捨てるレベル

編集 削除
επιστημη  URL  2012-11-08 20:26:47  No: 73567  IP: [192.*.*.*]

で、コイツは  1 + 2 = 5 とボタン押したとき 5 ですか 35 ですか?

編集 削除
ちゃい  2012-11-08 21:20:13  No: 73568  IP: [192.*.*.*]

35になります

編集 削除
επιστημη  URL  2012-11-09 04:27:47  No: 73569  IP: [192.*.*.*]

じゃ、メモリの前にちゃんと5になるよう修正するのが先じゃないすか?

編集 削除
ちゃい  2012-11-09 16:54:51  No: 73570  IP: [192.*.*.*]

はい
そうです

編集 削除
επιστημη  URL  2012-11-09 19:23:24  No: 73571  IP: [192.*.*.*]

んじゃ、そーゆーことで。

編集 削除
ホウジョウウサギ  2012-11-09 20:02:40  No: 73572  IP: [192.*.*.*]

とりあえず変数名等は役割がわかる名称にしたほうが良いのではないでしょうか
そのコードでは,何を書いていたのか次の日にはわからなくなりそうです.

…とか思った後で,張られているリンク先をちょっと覗いてみましたが,
変数名をわけわからん短い名前にするのは
どうやらそのサイトの方針(!)みたいですね.

フォームアプリケーションの習得がどれほど大変なのかわかりませんし
他に参考にできる場所があるのかどうかも存じませんけど,
とりあえず自分だったら絶対そのサイトだけは参考にしないだろうな,と思った.

編集 削除
ちゃい  2012-11-09 22:35:15  No: 73573  IP: [192.*.*.*]

>で、コイツは  1 + 2 = 5 とボタン押したとき 5 ですか 35 ですか?
これはなおりました

>130を入れてM+を押して5を押すと1305となるんです
上はなおりましたが次は130をいれてM+を押して65をおして四則演算ボタンを
押すとわけのわからない数字になります
例えば65×2=M+した後95を押して四則演算ボタンを押すと6175という数字に
なってしまいます
どうすればなおるでしょうか?

編集 削除
επιστημη  URL  2012-11-10 23:07:01  No: 73574  IP: [192.*.*.*]

直前の操作: 65 と × が残ったままになってるんでしょう。
そうだとすれば 65 × 95 で 6175 になりますな。

編集 削除
ちゃい  2012-11-11 10:50:51  No: 73575  IP: [192.*.*.*]

できました!
何度も何度もありがとうございました!

編集 削除