ブラック(マッド)

記事一覧(13)

電卓 // c++ の code を公開する。

今回は、前回諸事情で載せられなかったコードを、編集したので、載せます。それだけです。#include <iostream>#include <string>using namespace std;     int main(){          int num, num1, num2, amari, power, ans;          string what = "0";          string yn = "n";          amari = 0;          for (int fin = 10; fin >= 10; fin++){               cout << " 電卓" << endl;                //数字を入力。3桁制限。              for (int i = 10; i >= 10; i++) {                   cout << " 数字を入力してください。" << endl;                   cin >> num;                    if (num >= -999 && num <= 999){                        i = 0;                  } else {                        cout << "エラー:3桁を超えています。" << endl;                 }                 num1 = num;                 num = 1000;         }          //演算方法を選択         cout << " 計算方法を選択してください。" << endl;         cout << " 足し算なら、add" << endl;         cout << " 引き算なら、sub" << endl;          cout << " 掛け算なら、mul" << endl;          cout << " 割り算なら、div" << endl;          cout << " 累乗なら、 pow" << endl;          cout << "   を入力してください。" << endl;           //分岐計算方法を確認。          for (int i = 10; i >= 10; i++) {               cin >> what;               if (what == "0") {                    cout << "未入力です。" << endl;                    cout << " 入力してください。" <<endl;               } else if (what == "add") {                   i = 0;                   cout << " 足し算が選択されました。" << endl;              } else if (what == "sub") {                   i =0;                   cout << " 引き算が選択されました。" << endl;              } else if (what == "mul") {                  i = 0;                  cout << " 掛け算が選択されました。" << endl;              } else if (what == "div") {                      i = 0;                     cout << " 割り算が選択されました。" << endl;              } else if (what == "pow") {                    i = 0;                   cout << " 累乗が選択されました。" << endl;                   cout << " 何乗しますか。" << endl;            } else {                       cout << "エラー:無効な値です。" << endl;                        cout << " 入力してください。" <<endl;           }     }      //数字を入力3桁制限      for (int i = 10; i >= 10; i++) {            cout << " 数字を入力してください。" << endl;            cin >> num;           if (num >= -999 && num <= 999) {                i = 0;          } else {               cout << "エラー:3桁を超えています。" << endl;         }           num2 = num;         num = 1000;     }      //実際に計算する。     if (what == "add") {          num = num1 + num2;     } else if (what == "sub") {            num = num1 - num2;     } else if (what == "mul") {           num = num1 * num2;      } else if (what == "div") {           num = num1 / num2;          amari = num1 % num2;      } else if (what == "pow") {          power = num1;         for (int i = num2; i > 0; i--) {                   power = power * num1;          }           num = power;     }      //答えの3桁制限     if (num >= -999 && num <= 999) {          ans = num;          cout << " 計算結果:" << ans << "です。" << endl;          if (amari > 0) {                  cout << " 余りが出ました。" << endl;                  cout << " " << amari - 1 << "以上" << amari                    << "以下です。" << endl;             }        } else {             cout << "答えが3桁を超えました。" << endl;       }        //続けるかの確認。       for (int i = 10; i >= 10; i++) {                 cout << " 計算を続けますか。[y/n]" << endl;                cin >> yn;                if (yn == "y") {                       i = 0;                       cout << " 計算を続けます。" << endl;                } else if (yn == "n") {                      i = 0;                      fin = 0;                       cout << " 計算を終了します。" <<endl;               } else {                        cout << "エラー:y か n を入力してください" << endl;               }           }       }       return 0;   }

C++で電卓を作った。(How toではなく、ご紹介です。)

僕の師匠に<計算機を実装せよ>との課題を頂いたので、実際に今の全力で作って見ました。今回はそれを紹介します。師匠の課題の詳細は、こちら。  計算機を実装せよ。    仕様は、      3桁まで扱えるようにすること。      四則演算ができること。      四則演算に加え、 +α の機能を実装すること。この3つが仕様として出されますた。では、それにそって、コードを組んでいく。(言いたいだけ)まず、壁として立ちふさがったのが、3桁の数字の認識と弾き返し。とはいったものの、そんなに難しいわけでもなく、新しい文法事項を1つ覚えれば済んだ。if ( 条件A && 条件B ) {   文}そう、条件を && でつなぐことで、追加できるらしい。&& は、条件A:TRUE かつ 条件B:TRUE のときTRUE逆に、条件A:TRUE かつ 条件B:FELSE のときFELSEになります。これで、if ( num >= -999 && num <= 990 ) {文}な感じで、行けました。-999 ≦ num ≦ 999 に条件を設定し、for文に入れることで、3桁以内なら他の変数に代入、3桁を超えて居たら再入力させることで、3桁問題を解決しました。良かった。で、プラス α の機能なんですが、今回は累乗することにしました。a^n ( a の n 乗 ) をする。ここでも問題が発生して、どうやって何度も同じ数を掛けるかです。for を使うってのはわかってたんだけど、 n の部分を同処理するか、ということです。考え抜いた結果(そこまで考えてない)、    int num, num1, num2, power;    num1 = num; ( num には、何か数字が入ってるものとする。 )    num2 = num; ( num には、何か数字が入ってるものとする。 )    power = num1;    for ( int i = num2; num2 > 0; i -= 1 ) {        power *= num1;    }こんな感じで、行きました。これで、課題の中の2つの主要な問題点が解決されました。それで、今回学んだのは、if for の使い方や、ここには書きませんでしたが、フローチャートを使っての情報の整理で、この2つができるようになりました。フローチャートはかならず書くべきですね。紙媒体ってのも功を奏してるかも。今回は、ここまで、。なんか中途半端な感じがものすごくて、申し訳ない感があるけど、こんなもんでしょ。紹介であって、How to じゃないって宣言してあるしね。(言い訳)おつかれ様でした。気が向いたら、完全なコードをのせますね。広告をワンクリックお願いします。