問題2:クラス

この問題を解くためには…
 → 基本編第2日目参照

prob2-1.(難易度:★)

次のプログラムで使われすクラスKeisanに、メンバ変数a,bの引き算を帰すメンバ関数sub()を追加し、期待される実行結果のような出力結果が得られるようにプログラムを改造しなさい。

prob2-1:main.cpp
#include <iostream>
#include "keisan.h"

using namespace std;

int main(){
	Keisan k;
	k.a = 4;
	k.b = 3;
	cout << k.a << " + " << k.b << " = " << k.add() << endl;
	return 0;
}
keisan.h
#ifndef _KEISAN_H_
#define _KEISAN_H_

class Keisan{
public:
	int a;
	int b;
	int add();
};

#endif // _KEISAN_H_
keisan.cpp
#include "keisan.h"

int Keisan::add()
{
	return a + b;
}
実行結果
4 + 3 = 7

期待される実行結果
4 + 3 = 7
4 - 3 = 1   ← 新規に追加したメンバ関数sub()を利用して計算

prob2-2.(難易度:★★)

以下のプログラムを改造し、クラスMinMaxのメンバ関数max(),min()の引数の数を3つにし、期待される実行結果にならい、3つの数の最大値・最小値を出せるようにプログラムを改造しなさい。

prob2-2:main.cpp
#include <iostream>
#include "minmax.h"

using namespace std;

int main(){
	MinMax m;
	int a = 4;
	int b = 2;
	cout << a << "と" << b << "のうち、最大のものは" << m.max(a,b) << endl;
	cout << a << "と" << b << "のうち、最小のものは" << m.min(a,b) << endl;
	return 0;
}
minmax.h
#ifndef _MINMAX_H_
#define _MINMAX_H_

class MinMax{
public:
	int max(int n1,int n2);
	int min(int n1,int n2);
};

#endif // _MINMAX_H_
minmax.cpp
#include "minmax.h"

//	最大値を返す
int MinMax::max(int n1,int n2){
	if (n1 > n2){
		return n1;
	}
	return n2;
}
//	最小値を返す
int MinMax::min(int n1,int n2){
	return -max(-n1, -n2);
}
期待される実行結果
4と2のうち、最大のものは4
4と2のうち、最小のものは2

期待される実行結果
4と2と7のうち、最大のものは7
4と2と7のうち、最小のものは2