• ベストアンサー

電卓プログラムについて(VC++)

プログラミング経験ほとんどゼロで電卓プログラムを作ることになって、 現在いろいろと調べながら悪戦苦闘しているところです。 一点だけわからない点があるので質問させていただきます。 http://vcpp.seesaa.net/category/3783110-1.htmlのサイトを参考にしながら 電卓を作成しているのですが、ー(マイナス)ボタンの実装で ans =ans - now; now=0; とするとansがマイナスの値となってしまいうまくいきません。 どのようにすればよいでしょうか?

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★きっと C 言語でしょうね。 >visual C++で作っているところです。  ↑  C言語、C++言語、C++/CLI(.NET)のどれか補足して欲しかった。  『Visual C++』はマイクロソフト社製のコンパイラを使っているのはタイトルから  分かりますよ。使っている言語です。補足して欲しかったのは言語のタイプ。 ・C、C++、C++/CLIの区別が付いていないのなら C 言語を始めたばかりで電卓を  作ろうとしているのでしょうかね。  あと電卓は GUI(ウインドウが出るタイプ)ですか?  電卓のアルゴリズムの問題ですので、最初はコマンド・プロンプトタイプで作成して  から GUI に組み込むようにしてみてはどうですか?  コマンドライン上でも電卓が作れなければ GUI 電卓は無理ですからね。 >変数についてですが、 >ansは最終的な答え用です。 >nowは現在入力した数値です。  ↑  変数名から想像は付きます。  補足して欲しかったのは ans、now 以外に電卓で使用する変数です。  ans、now だけでは電卓は作れない気がしますので。  最初に載せた電卓の構造体のようなものは定義していますか?  定義しているのなら変数名とその意味を補足して欲しいのです。 >要領を得ない質問で申し訳ありませんでした。  ↑  C 言語の初心者さんですか?  Windows プログラムの初心者さんですか?  どの程度の何を理解していますか? ・とりあえずこの『回答への補足』と『回答へのお礼』にソースを貼り付けて下さい。  それからアドバイスしますよ。 ・以上。→文字数が足りない場合は省略しないで貼り付けられる部分だけで良いです。

その他の回答 (3)

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

>visual C++という言語を使っています。 それは言語でなく開発環境です。。。そうではなくて、 VCは2005とかだと C も C++ も C++/CLI も使えるから、 どの範囲まで使ってつくるのかを質問されています。 >ans =ans - now; >now=0; >とするとansがマイナスの値となってしまいうまくいきません。 どううまくいかないのでしょうか? 計算結果が0未満なら負の値になるのは正しいと思いますが。。。 どのような動作を期待されているのでしょうか?

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★追記。 ・ブログを読んでいったら C++/CLR だね。  言語は C、C++、C++/CLR(CLI) どれを使っているの?  OS なども明記してね。  そうしないと勝手に Windows OS だとして回答します。 ・以上。補足。

hokkah5003
質問者

お礼

visual C++という言語を使っています。 C++とはかなり異なるのでしょうか? OSはWindowsXPです。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★情報が不足しています。 >ans =ans - now; >now=0;  ↑  これだけではね分かりませんよ。  ブログのサイトを参考にしているようですけど C++/CLI ですよ。  本当に参考になっている? ・ans にマイナスが入るなら 0 以下なら絶対値を代入して  符号フラグを ON にしたらどうですか?  hokkah5003 さんが電卓の変数などをどのように管理しているのかが  こちらでは分からないためこれ以上はアドバイスできません。  ちなみに昔電卓ソフトを作ったときには  // 簡単な多倍長整数の構造体  typedef struct number_t {   int len;   int exp;   int num[ MAX_DIGIT ];  } number_t;    // 電卓管理の構造体  typedef struct calc_t {   int sign;   // マイナス時のフラグ   int ope;   // 現在の演算記号(+ - * / =)   int ope2;  // 1つ前の演算記号(+ - * / =)   int flags;  // AC/C/-/.などのフラグ   number_t inp; // 入力専用(X)   number_t ans; // 演算結果(Y)   number_t mem; // 独立メモリ   number_t tax; // 消費税変数(1.05)  } calc_t;    こんな感じだったと思います。 ・以上。構造体なども参考に。

hokkah5003
質問者

お礼

回答ありがとうございました。 visual C++で作っているところです。 変数についてですが、 ansは最終的な答え用です。 nowは現在入力した数値です。 要領を得ない質問で申し訳ありませんでした。

関連するQ&A

  • 簡単電卓をjavaプログラムで作成しました。

    テキストフィールドに入力し、四則演算ボタンを押すと答えた表示されるように作ったのですが、答えが表示されません。どなたかご教授ください。お願いいたします。 import java.applet.Applet; import java.awt.*; // java.awtパッケージのインポート import java.awt.event.*; public class EasyCulc extends Applet { Button plus, minus, multi, div; // ボタン TextField txta, txtb, ans; // 数値入力用テキストボックス public void init() { plus = new Button("+");// ボタンのインスタンスを作成 plus.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // txtaに入力された値 + txtbに入力された値を計算 int answer = Integer.parseInt(txta.getText()) + Integer.parseInt(txtb.getText());ans.setText(Integer.toString(answer));// 答えをansに表示 } }); minus = new Button("-");// ボタンのインスタンスを作成 minus.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // txtaに入力された値 - txtbに入力された値を計算 int intAnswer = Integer.parseInt(txta.getText()) - Integer.parseInt(txtb.getText()); ans.setText(Integer.toString(intAnswer));// 答えをansに表示 } }); multi = new Button("x");// ボタンのインスタンスを作成 multi.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // txtaに入力された値 x txtbに入力された値を計算 int intAnswer = Integer.parseInt(txta.getText()) * Integer.parseInt(txtb.getText()); ans.setText(Integer.toString(intAnswer));// 答えをansに表示 } }); div = new Button("÷");// ボタンのインスタンスを作成 div.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // txtaに入力された値 ÷ txtbに入力された値を計算 int intAnswer = Integer.parseInt(txta.getText()) / Integer.parseInt(txtb.getText()); ans.setText(Integer.toString(intAnswer));// 答えをansに表示 } }); // コンポーネントの初期化 txta = new TextField("", 5); txtb = new TextField("",5 ); plus = new Button("+"); minus = new Button("-"); multi = new Button("x"); div = new Button("÷"); ans = new TextField("", 5); // コンポーネントを追加 this.add(txta); this.add(txtb); this.add(plus); this.add(minus); this.add(multi); this.add(div); add(new Label("計算結果")); this.add(ans); } }

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

    プログラミングの知識を復活させるためにパソコンにあるソフトウェア を使って、電卓を作りたいと思っております。 ただ、もう知識がほとんど頭に残っておらず、悪戦苦闘が予想されます。色々とサルでもわかるようなことを聞くかもしれませんが、それにお付き合いできる方のみこれ以降お読み下さい。 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個) それで、非常に基本的な質問です。 計算結果を表示するスクリーンが必要なのですが、ツールボックスに それらしきものが見当たりません。 それはなんでしょうか? 真面目に聞いております。ふざけていません。 教えてください。 よろしくお願いいたします。

  • VB 基本的なプログラム √ 計算について

    私は最近プログラミングをはじめました。 visual basic 2005 という書物を買い 電卓を作成したのですが、ここに√と% のボタンを追加しようと思っています。 √のボタンが作ることができれば 似たような動きで%も作れるのではと 考えました。 label1に入力したものを√を押すと label2に出力するというプログラムの 作り方が知りたいです。 多分=のボタンと作りを同じように するのだろうと考えて数日たったのですが、 成果が出そうにないのでここで質問させていただきました。 よろしければご教授お願いします。

  • プログラムが動かない

    電卓のプログラムを作ろうと以下のようなソースを書いたんですが、コンパイルするときに 警告 W8070 denntaku.c 38: 関数は値を返すべき(関数 main) というエラーが出てしまいます。 原因はなんなんでしょうか? (ソース) #include <stdio.h> main() {  int val1,val2,ans;  char p,m,k,w,how;  printf("val1? \n");  scanf("%d", &val1);  printf("how? \n");  scanf("%c", &how);  printf("val2? \n");  scanf("%d", &val2);  switch(how)  {   case 'p':   ans=val1+val2;   printf("%d+%d=%d \n", val1,val2,ans);   break;   case 'm':   ans=val1-val2;   printf("%d-%d=%d \n", val1,val2,ans);   break;   case 'k':   ans=val1*val2;   printf("%d*%d=%d \n", val1,val2,ans);   break;   case 'w':   ans=val1/val2;   printf("%d/%d=%d \n", val1,val2,ans);   break;  } }

  • くし形フィルタのプログラム

    論文でくし形フィルタという手法を見つけ内容を理解したのですが プログラミングが苦手で実装できずに困っています。 音高推定を行う対象のデータは揃っているので それを読み込んで実際にフィルタリングを行いたいのですが…。 お勧めの参考書や、実際に書いたプログラムがあれば教えていただけると幸いです。

  • MFC VC++6.0 DestroyWindowの実装場所について

    [開発環境]:Visual C++ 6.0 現在、Visual C++ 6.0を使ったプログラミングの勉強をしています。 MFC AppWizard (exe)でSDIプログラムのtest1プロジェクト作成後、メインフレームにボタンを実装し、そのボタンを押下するとモードレスダイアログを表示するというアプリケーションを作っているのですが、ダイアログを終了させる時のDestroyWindowの実装場所と実装方法が分かりません。 ダイアログ用のクラスはCmyDialogとしていますが、ダイアログの終了ボタンを実装した場合、そのボタン処理の中すなわちCmyDialogクラスのなかの関数で行うべきなのでしょうか?それともダイアログの作成と同様にメインフレームがわの処理(CTest1Viewクラスでの処理?)として行うべきなのでしょうか?この場合にはどのような場所でどのようなタイミングで実装すればよいのか分かりません。 ご存じの方、これらについて御教授お願いします。 以下プログラムの一部を記載します。 -test1view.cppの一部-(ここでダイアログの作成と表示をしています) void CTest1View::OnButton1() { CmyDialog* myDLG = new CmyDialog; myDLG->Create(IDD_DIALOG1,this); myDLG->ShowWindow(SW_SHOW); }

  • USBカメラを使った動体検知ソフトの開発をやっているのですが・・・

    まだ、プログラムも初心者ものでご迷惑かけます。 動体検知をCやC++で作りたく、理論・アルゴリズムについて調べているのですが、なかなか参考になる物が無く悪戦苦闘しております。 なにか、参考になるアドバイス・HPがありましたら教えてください。

  • プログラム作りです。:Basic

    ポケットコンピュータでプログラミングをしている とある者です。 次の問題を言語、Basicを用いて作ってください。 ※ 私は、それを利用するとか宿題だぁ!とか そういったものではありません。 専門知識のある方のプログラムの作り方をみて勉強をさせていただきたいのです。 なるべく簡単な文でお願いいたします。 ┏━┓ ┃1┃ ┗━┛ 5人に英語のテストを行い、次のような結果が得られました Aくん= 20 Bくん= 40 Cくん= 30 Dくん= 80 Eくん= 50 (1)それぞれの点数を(READ,DATAを使い)読んでから、5人の平均を求め、さらに平均点に最も近い点数を見つけ、平均点にもっともちかい点数を表示するプログラム (2) ↑(1)のやつを、READで読むのではなく、INPUTに書き換えるのならば、その書き換えた部分のプログラム ┏━┓ ┃2┃ ┗━┛ (1)X,Yの値を入力して Z=X*(かける)Y+Y を計算し、Zの値を表示し、プラスの時は、”プラス”、マイナスの時は”マイナス”、ゼロの時は”ゼロ”と表示するプログラム。 その表示と同時に、その計算結果を表示させる。 (2) ↑(1)のプログラムを改良して、最後まで計算をしたら、 ”Pless any key!”と点滅表示させて、何かキーを押したら、最初の行に戻るプログラムにする。 どうか、面倒さまですが、おしえてください。 また、こんな初心者にも(でなくても)わかるようなHPがありましたら、教えてくださいね。 ご回答お待ちしています。

  • これから勉強したいのですが

    初心者です、とても漠然とした話ですがプログラミング言語はたくさんありますが、どのような言語から学んだほうが良いのでしょうか?自分はとにかくボタンなどを実装したグラフィカルなプログラムを作りたいのですが、それを踏まえた上でお教え下さい。よろしくお願いします。

  • exeファイルをプログラムから操作する。

    お世話になります。 VisualStudio2019(C#またはVB)で下記を実装したいと思っています。 ①あるプログラム(1.exe)のフォーム内にいくつかある指定のボタンを押す。  ⇒ウィンドウを取得、ウィンドウハンドルを取得してボタン押下 ②①の操作でプログラム(2.exe)が起動する。 ③2.exeプログラムの複数あるテキストボックスの中から指定のテキストボックスに文字を入力  ⇒ウィンドウを取得、テキストボックスのウィンドウハンドルを取得してテキストに値をセット いろいろサイトを探したのですが、「まさにコレ」といったものがなく困っています。 もしご教授いただければ幸いです。 よろしくお願いいたします。

専門家に質問してみよう