超初心者です
今電卓をつくっていて数字のところはできたんですが
メモリ機能ができません
Windows フォームアプリケーションでつくっています
回答よろしくお願いいたします!
> 回答よろしくお願いいたします!
...って、質問がどこにも見当たらんのですが。
メモリ機能のプログラムをどのようにすればいいでしょうか??
http://oshiete.goo.ne.jp/qa/7781081.html
この関連でしょうかねぇ……。
CLRはよくわからないのでパスですが。
> メモリ機能のプログラムをどのようにすればいいでしょうか??
漠然としてて答えようがないっす。
m\*メモリ用の変数*\=textBox1->Text;
M+はこんな感じのプログラムかな〜と思って動かしてみるとmが消えずにそのまま数字がでてきます
例えば130を入れてM+を押して5を押すと1305となるんです
どうすればなおるでしょうか?
>例えば130を入れてM+を押して5を押すと1305となるんです
M+またはM-が押された後、数字ボタンが押されたら現在TextBoxに設定されている値は破棄する。
みたいな判定をするフラグを追加して処理すればよいのではないですか?
具体的なコードは…CLR触っていないので掲示出来ませんけど。
フローチャートとかで流れを考えるべきかと思いますが……。
>瀬戸っぷさん
それは大体わかるんですよ・・・
でもそのプログラムがかけなくて・・・
なにしろ超!初心者ですから・・・
たとえば'='押して答が出た直後に数字入力するときと同じじゃね?
はい
そうなんですけどεπιστημηさんがいってるような
仕様じゃないのでわからないんですよ・・・
できればプログラムを教えてください
あんたのおうちの間取りもわからんのに増改築できるわけねぇやん。
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;
です
長文失礼しました
なにがなにやらさっぱりわからん。
なんというか……さすが超初心者ですね。
コメントもなし、変数の役割も判らないコードでどうにかして下さいと言われても……。
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定義するなりして可読性をあげるべきです。
# まぁ、このままのコードにしておいて、半年後の自分が読んでみて混乱しないのであればかまわないかもしれませんが。
# ただし、その場合はプログラミングを仕事にするべきではありません。
というワケで……せっかくコードを掲示されても
>あんたのおうちの間取りもわからんのに増改築できるわけねぇやん。
という状況からたいして変わっていないです。
電卓のプログラムなら…検索すると誰かが作った例とかあるんじゃないですかね?
# メモリ計算機能があるかどうかは別にしても。
cnは小数点ボタンが押された後、何回数字ボタンが押されたかカウントしています。
y2は小数点ボタンが押されたか判定していて押されればy2は1になって押されてなければ0になります。
zはよくわからないので自分が参考にしているサイトを見てください
http://www.5b.biglobe.ne.jp/~suugaku/vc++kougi/index.html
この第6講にのっています。
すいません
上のリンク間違っていました。
http://www5b.biglobe.ne.jp/~suugaku/vc++kougi/index.html
なんにせよこんなコード読む気にはならんなー
# ウチの若いモンがこんなもん持ってきたら窓から投げ捨てるレベル
で、コイツは 1 + 2 = 5 とボタン押したとき 5 ですか 35 ですか?
35になります
じゃ、メモリの前にちゃんと5になるよう修正するのが先じゃないすか?
はい
そうです
んじゃ、そーゆーことで。
とりあえず変数名等は役割がわかる名称にしたほうが良いのではないでしょうか
そのコードでは,何を書いていたのか次の日にはわからなくなりそうです.
…とか思った後で,張られているリンク先をちょっと覗いてみましたが,
変数名をわけわからん短い名前にするのは
どうやらそのサイトの方針(!)みたいですね.
フォームアプリケーションの習得がどれほど大変なのかわかりませんし
他に参考にできる場所があるのかどうかも存じませんけど,
とりあえず自分だったら絶対そのサイトだけは参考にしないだろうな,と思った.
>で、コイツは 1 + 2 = 5 とボタン押したとき 5 ですか 35 ですか?
これはなおりました
>130を入れてM+を押して5を押すと1305となるんです
上はなおりましたが次は130をいれてM+を押して65をおして四則演算ボタンを
押すとわけのわからない数字になります
例えば65×2=M+した後95を押して四則演算ボタンを押すと6175という数字に
なってしまいます
どうすればなおるでしょうか?
直前の操作: 65 と × が残ったままになってるんでしょう。
そうだとすれば 65 × 95 で 6175 になりますな。
できました!
何度も何度もありがとうございました!
ツイート | ![]() |