/****************************/ /* 正方形,円,正三角形 */ /* coded by Y.Suganuma */ /****************************/ #include <iostream> // クラス Shape class Shape { public: virtual double menseki() = 0; // 面積の計算(純粋仮想関数) }; // クラス Rectangle class Rectangle : public Shape { double size; public: Rectangle(double s) : size(s) {} // コンストラクタ double menseki() // 正方形の面積 { return size * size; } }; // クラス Circle class Circle : public Shape { double size; public: Circle(double s) : size(s) {} // コンストラクタ double menseki() // 円の面積 { return 3.141592654 * size * size; } }; // クラス Triangle class Triangle : public Shape { double size; public: Triangle(double s) : size(s) {} // コンストラクタ double menseki() // 正三角形の面積 { return 0.433012701 * size * size; } }; // main int main() { Rectangle r1(1.0); Circle c1(1.0); Triangle t1(1.0); std::cout << r1.menseki() << " " << c1.menseki() << " " << t1.menseki() << std::endl; return 0; }
/****************************/ /* 8進,10進,16進 */ /* coded by Y.Suganuma */ /****************************/ #include <iostream> using namespace std; // クラス number class Number { protected: int num; public: Number(int n) : num(n) {} // コンストラクタ virtual void out() = 0; // 出力(純粋仮想関数) }; // クラス o8 class O8 : public Number { public: O8(int n) : Number(n) {} // コンストラクタ void out() // 8進出力 { cout.setf(ios::oct); cout.unsetf(ios::dec); cout.unsetf(ios::hex); cout << num << endl; } }; // クラス o10 class O10 : public Number { public: O10(int n) : Number(n) {} // コンストラクタ void out() // 10進出力 { cout.unsetf(ios::oct); cout.setf(ios::dec); cout.unsetf(ios::hex); cout << num << endl; } }; // クラス o16 class O16 : public Number { public: O16(int n) : Number(n) {} // コンストラクタ void out() // 16進出力 { cout.unsetf(ios::oct); cout.unsetf(ios::dec); cout.setf(ios::hex); cout << num << endl; } }; // main int main() { O8 n1(200); O10 n2(200); O16 n3(200); n1.out(); n2.out(); n3.out(); return 0; }
菅沼ホーム | 演習解答例目次 | 本文目次 | 付録 | 索引 |