重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

プログラミング経験ほとんどゼロで電卓プログラムを作ることになって、
現在いろいろと調べながら悪戦苦闘しているところです。
一点だけわからない点があるので質問させていただきます。

http://vcpp.seesaa.net/category/3783110-1.htmlのサイトを参考にしながら
電卓を作成しているのですが、ー(マイナス)ボタンの実装で

ans =ans - now;
now=0;

とするとansがマイナスの値となってしまいうまくいきません。
どのようにすればよいでしょうか?

A 回答 (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 プログラムの初心者さんですか?
 どの程度の何を理解していますか?
・とりあえずこの『回答への補足』と『回答へのお礼』にソースを貼り付けて下さい。
 それからアドバイスしますよ。
・以上。→文字数が足りない場合は省略しないで貼り付けられる部分だけで良いです。
    • good
    • 0

>visual C++という言語を使っています。


それは言語でなく開発環境です。。。そうではなくて、
VCは2005とかだと C も C++ も C++/CLI も使えるから、
どの範囲まで使ってつくるのかを質問されています。

>ans =ans - now;
>now=0;
>とするとansがマイナスの値となってしまいうまくいきません。
どううまくいかないのでしょうか?
計算結果が0未満なら負の値になるのは正しいと思いますが。。。
どのような動作を期待されているのでしょうか?
    • good
    • 0

★追記。


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

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

お礼日時:2007/09/20 07:09

★情報が不足しています。


>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;
 
 こんな感じだったと思います。
・以上。構造体なども参考に。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/20 07:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!