• ベストアンサー

VBで電卓のメモリー機能はどのように作るのですか。

VBを始めて少ししか経っていないものです。 会社で「"実際の電卓"その物をVBで、5月一杯までに作りなさい」と言われました。本を買い何とか数字を文字列に変えたり、四則計算などは出来たのですが、 "平方根と、メモリー機能と、CE(直前の入力された値をキャンセルします)"が載っていなかったので、とても困っています。 どなたかわかる方、教えて頂けないでしょうか。よろしくお願いします。

  • s_h_y
  • お礼率91% (11/12)

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

えっと、変数の使い方がまだ良く分かってらっしゃらないんじゃないかと推測します。 まず、電卓フォームのコードを表示して、 Dim curMemory as Currency って書きます。 これで、このフォームのすべてのプロシージャから参照可能な、「curMemory」って言う名前の変数(通貨型)が使用可能になります。 んで、まずは「M+」を実装してみます。 フォーム上にボタン「cbMemoryPlus」と、数値を表示するためのテキストボックス「tb表示」が配置されているものとします。 まず、ボタンをダブルクリックで、Clickイベントのコードを表示させた後、 Sub cbMemoryPlus_Click()   '「curMemory」に、(「現在の『curMemory』の値」+ 「テキストボックスの値」)をセットする   curMemory = CurMemory + val(Me.tb表示) End Sub 「M-」「MC」も同様(あえて書きません。) 「MR」は Sub cbMemoryRecall_Click()   'テキストボックスに「curMemory」の値をセットする   Me.tb表示 = curMemory End Sub ですね。 「CE」も同様です。(あえて書きません。) 本を読むのは重要ですが、実際のプログラミングにおいては八割方は、どんな本にも載ってないようなコードを書かなくてはなりません。自分の持てる知識を総動員して、試行錯誤+創意工夫によって答えを導き出さなくてはならないのです。 五月末までにまだ暫くありますので、その間、ご自身がお書きになったコードを1行ずつ読み、そこで何が行われているのかをしっかりと理解しておくようにすれば、いいかもしれません。そうすれば今後似たような問題を出されたとしても、スラスラ解けるようになるのではないかと思います。 ってことで、がんばってください! ※「電卓」は初級コースの問題ですが、これが「関数電卓」になるといきなり上級コースになっちゃうんですよねぇ。 私も昔「電卓」に取り組んだことがありますが、これを関数電卓にアップグレードしようとして悩みぬいた挙句、挫折した記憶があります。(当時は後置記法なんて、微塵も知らんかったもんなぁ。)

s_h_y
質問者

お礼

すみません、間違えて補足のほうに書いてしまいました。細かいアドバイス本当にありがとうございました。

s_h_y
質問者

補足

 お礼が遅くなり申し訳ありません。ありがとうございました。すみません、折角細かく書いて下さっているのに、私の乏しい知識では自分の(本の)コードのどこに入れたら良いのかが分からないのです。入れる場所はどのようにすれば宜しいのでしょうか。  そして、教えて頂きたいのですが今回はテキストボックスではなく、ラベルで数字を出しているので、説明して下さったテキストの部分をどのように変えれば良いのかが分からないのです。後、ラベルで、数字を12桁以上、表示出来ない様にするには、MaxLengthでやっているのですが、エラーが出てしまいます。どうすれば良いと思われますか。  お時間がありましたら、ご返答の方宜しくお願います。

その他の回答 (3)

  • gokkun
  • ベストアンサー率47% (115/244)
回答No.3

メモリー機能はありませんが、参考URL→ダウンロードのソースが参考になると思います。

参考URL:
http://hb5.seikyou.ne.jp/home/victor/index.html
s_h_y
質問者

お礼

お礼が遅くなり、申し訳ありませんでした。とても、参考になっています。 ありがとうございました。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.2

メモリ付きの電卓は使ったこと有りますか? とりあえずメモリ用の変数を一つ用意して、 M+:メモリ用の変数に現在の値を加算する M-:メモリ用の変数から現在の値を減算する MR:メモリ用の変数の値を現在の値とする MC:メモリ用の変数をゼロクリアする とりあえずこれだけです。そんなに難しい実装は必要ないと思うんですが・・・

s_h_y
質問者

お礼

学校に通っている時、簿記などやっていましたので、電卓機能は分かるのですが、どのようにコードを書けばよいのかが、分からないのです。 でも、shigatsuさんのアドバイスを参考にさせて頂きます。お忙しい中、助言有難うございました。

  • Masato_a
  • ベストアンサー率21% (13/60)
回答No.1

とりあえず、平方根なら「Sqr関数」でできます。

s_h_y
質問者

お礼

わかりました。一生懸命頑張ります。有難うございました。

関連するQ&A

  • 平方根計算付きのテンキー電卓について

    平方根計算付きのテンキー電卓について テンキー電卓を買おうと思っていますが、平方根計算が付いた機種を見つけられません。 同機能が付いている機種が有りましたら教えてください。

  • VB 電卓 メモリー機能

    VB.NETで電卓にメモリ機能をつけたいのですが ソースがわかりません。 とりあえずメモリ用の変数を一つ用意して、 下記に機能はこのような感じだと思って書いてみました。 M+:メモリ用の変数に現在の値を加算する MS:メモリーに記録。今までのは消える。 MR:メモリ用の変数の値を現在の値とし、ディスプレイに表示。 MC:メモリ用の変数をゼロクリアする M+の場合 Dim curmemory As Decimal Private Sub cmdMemoryPlus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMemoryPlus.Click curMemory = curMemory + txtDisplay.Text curMemory = curMemory + Val(txtDisplay.Text) MCは何とかわかりそうなのですが、M+でもあたっているか わからない上に、MS、MRはまったくわかりません。 申し訳ありませんが、アドバイス等よろしくお願いいたします。

  • 電卓を使った数字遊びについて

    自分のあるいは相手の電話番号(最初の0は省く)の数字を電卓に表示させ、足したり引いたり掛けたりいろんな四則を使って計算すると最後には初めの電話番号が表示されている。そんな数字の遊びがあったと思います。あるいは似たような電卓で遊べるこの手の手品みたいなことが紹介されてるサイトや情報を探してます。電卓の計算以外での使い方遊び方を教えて下さい。

  • 関数電卓で++のやり方は、

    関数電卓では一般に2種類あります。 自然数式と一般の電卓方式(計算が2列にならない)ものです。 最近はじめて自然数式タイプの関数電卓を購入しましたが、いままで簡単にできていた基本的な計算方法が見つかりません。 以下のものです。 100+100+100+・・・・・・・= という計算を今までの一般的なもので計算する場合、 100++(+を2回続けて押す)=200, もう一度=を押すと・・・200,また押すと・・・300 というように簡単に同じ数字を足し合わせたり、掛け合わせたりするにはどのように計算すればいいのでしょうか? ちょっと質問内容が伝わりにくいでしょうか・・・ よろしくお願いします。

  • 自分で電卓を作成したいのですが、・・・

    プログラミングの知識を復活させるためにパソコンにあるソフトウェア を使って、電卓を作りたいと思っております。 ただ、もう知識がほとんど頭に残っておらず、悪戦苦闘が予想されます。色々とサルでもわかるようなことを聞くかもしれませんが、それにお付き合いできる方のみこれ以降お読み下さい。 VisualC#にて、既にForm1.csにてButtonのみ(笑)作成しました。 以下がツールボックスから作成したbuttonとその機能についての簡単な説明です。ただし、当然ですが、Program.csにおけるプログラミングはまだ一切しておりません。 ・0~9までの数値(button10個) ・.小数点(button1個) ・+ or -(button1個) ・+,-,*,/の四則演算(button4個) ・=(button1個) ・メモリー機能M+,M-,MR,CM(button4個) ・%(消費税計算)(button1個) ・Sqrt(平方根計算)(button1個) ・C(Clear機能)(button1個) ・AC(All Clear機能)(button1個) それで、非常に基本的な質問です。 計算結果を表示するスクリーンが必要なのですが、ツールボックスに それらしきものが見当たりません。 それはなんでしょうか? 真面目に聞いております。ふざけていません。 教えてください。 よろしくお願いいたします。

  • √ って何が分かるのですか?

    電卓に√記号がありますが、これは何が分かるのですか? 2の平方根は、1.41421356 というこの数字を2乗したら 2になると言うことは知っているのですが、それで 何が分かるのでしょうか? 電卓の√記号は何が分かるか教えてください

  • 計算機(電卓)はどうやって計算しているのですか?

    最近、計算というとすぐExcelを開いてしまいます。 しかし、昔は関数電卓など計算をする際には計算機が主流だったと思います。 ルート7という計算は関数電卓の内部ではどのような処理が行われ答えが表示されるのだろうかと、ふと疑問に思い質問させていただきました。 Excelでは“ ^ ”という記号が平方根の計算のための記号であり、これがコマンドとしてパソコン内部で認識され(バイナリー変換による電圧差を認識することにより)計算の結果がはじき出されていることは分かります。 どなたか、この手の事情に詳しい方がおりましたら教えてください。

  • [電卓で立方根]のことで質問です

    こんにちは。はじめまして。 中学で数学のクラブに所属しています。友達とここの数学のところを見ていてQNo.3727231の[電卓で立方根]に興味を持ちました。 でもANo.4に書いてあるとおりにやってみても数はどんどん大きくなっていって、値が代わらなくなるまで、というのがわかりません。 質問した人はお礼を言って回答を締め切っているので、大人にはわかっても私たちの頭がついていけてないのだと思います。 すみませんが、中学生にわかるように操作手順を教えてもらえませんか? また、どうしてこんな計算をすると√を使って3乗根が計算できるのかも教えてください。とっても不思議です。 それから、このように√を使って、4乗根、5乗根、・・・を求める方法はあるのでしょうか? 何乗根まで求められるのでしょうか? 教えてください。 よろしくお願いします。

  • 平方根

    平方根(√)の計算が出来る電卓を無料でダウンロード出来るサイトがありますか?あれば教えて下さい。

  • java 電卓 平方根

    こんにちは。趣味でプログラミングをしているものです。 さっそくですが質問させていただきます。 Java で文具店で1000円くらいで売っているような電卓を再現 しようとしているのですが 平方根のボタンを押したときの処理でつまづいています。 3 を入力して平方根のボタンを押すと以下のサイトに表示されている限りにおいては 同じ数値になります。 http://ja.wikipedia.org/wiki/3%E3%81%AE%E5%B9%B3%E6%96%B9%E6%A0%B9 ここで質問の内容について説明させていただきます。 Windows に標準で付属している電卓では 0.5 を入力して平方根のボタンを押し続けると 最後には 1 が表示されます。 ですが、以下に示す自分のコードだと 0.99999999998 と表示されてその後 平方根のボタンを押し続けても同じ結果になります。 0.99999999998 で収束しているのだと思いますが、 (自分の作った電卓では小数点以外の数字は12個表示されるようになっています。) 1 に収束するようにするには、 以下に示す メソッドsqrt 内の計算部分の 割り算のスケールの指定とかを変えれば うまくいくのでしょうか? ----------------------------------------------- 平方根のボタンを押したときの処理です。 case CalculatorEvent.TYPE_SQRT : if( negativeflag ) { if( ! display.showBigMinus ) showNumString = showNumString.substring( 1 ); } result = sqrt( new BigDecimal( showNumString ) ); //test statement System.out.println( "from 1446 : " + result.toString() ); result = result.setScale( 32, RoundingMode.HALF_UP ); showNumString = result.toString(); //test statement; System.out.println( "sqrt result : " + showNumString ); // . . . . //以下おもに端数を表示桁数に丸めて、 //負の値の平方根を求めたときは //絶対値の平方根を求めて表示 // エラーであるマークも表示 // 呼び出し元に例外を投げる // 呼び出した側で例外を受け取ると // 電卓のボタンを入力できないようにする ----------------------------------------------- 上記コード test statement は以下の出力結果になると 以後 平方根のボタンを押しても同じ結果が出力されます。 from 1446 : 0.9999999999899999999999499999999994999999999937499999999125000000078125 sqrt result : 0.99999999998999999999995000000000 ------------------------------------------------ 上記コード中のメソッド sqrt です。 private BigDecimal sqrt( BigDecimal value ) { BigDecimal two = new BigDecimal( "2" ); BigDecimal x = value.divide( two ); BigDecimal last_x = BigDecimal.ZERO; BigDecimal gap = x.subtract( last_x ); BigDecimal range = BigDecimal.ONE.movePointLeft( 64 ); BigDecimal t; while( gap.compareTo(range) > 0 ) { last_x = new BigDecimal( x.toString() ); //t = value.divide( x, 64, BigDecimal.ROUND_DOWN ); //test statement t = value.divide( x, 64, RoundingMode.HALF_EVEN ); // x = x.add( t ).divide( two ); gap = x.subtract( last_x ).abs(); } return x; } ----------------------------------------------- 長文になりもうしわけありませんが、 ごぞんじのかた、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう