/****************************/
/* 正方形,円,正三角形 */
/* 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;
}
| 菅沼ホーム | 演習解答例目次 | 本文目次 | 付録 | 索引 |