/****************************/
/* プラントモデル */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
/********************/
/* クラスFeedの定義 */
/********************/
class Feed { /* 原料の供給 */
public:
double x, y, z;
// コンストラクタ
Feed(double x, double y, double z)
{
this->x = x;
this->y = y;
this->z = z;
}
// 出力
void print()
{
printf("x %f y %f z %f (feed)\n", x, y, z);
}
};
/*******************/
/* クラスAddの定義 */
/*******************/
class Add { /* 混合 */
public:
double x, y, z;
// コンストラクタ
Add(Feed &a, Feed &b)
{
x = a.x + b.x;
y = a.y + b.y;
z = a.z + b.z;
}
// 出力
void print()
{
printf("x %f y %f z %f (add)\n", x, y, z);
}
};
/***********************/
/* クラスProductの定義 */
/***********************/
class Product { /* 製品 */
public:
double x, y, z;
// コンストラクタ
Product(Add &a)
{
x = 0.1 * a.x;
y = 0.2 * a.y;
z = 0.9 * a.x + 0.8 * a.y;
}
// 出力
void print()
{
printf("x %f y %f z %f (product)\n", x, y, z);
}
};
/************/
/* main関数 */
/************/
int main()
{
Feed feed1(10.0, 20.0, 0.0);
feed1.print();
Feed feed2(5.0, 10.0, 0.0);
feed2.print();
Add add1(feed1, feed2);
add1.print();
Product pro1(add1);
pro1.print();
return 0;
}