Programming/C++

열혈c++ Chapter03 문제03-2 1번 2번

fishersheep 2021. 8. 15. 23:43
반응형

클래스활용 예제

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>	
using namespace std;

namespace CAR_CONST
{
	enum
	{
		ID_LEN=20,MAX_SPD=200,FUEL_STEP=2,
		ACC_STEP=10,BRK_STEP=10
	};
}

class Car
{
private:
	char gamerID[CAR_CONST::ID_LEN];
	int fuelGauge;
	int curSpeed;

public:
	void InitMembers(char *ID, int fuel);
	void ShowCarState();
	void Accel();
	void Break();
};

void Car::InitMembers(char* ID, int fuel)
{
	strcpy(gamerID, ID);
	fuelGauge = fuel;
	curSpeed = 0;
}

void Car::ShowCarState()
{
	cout << "소유자ID: " << gamerID << endl;
	cout << "연료량: " << fuelGauge << "%"<< endl;
	cout << "현재속도: " << curSpeed << "km/s" << endl << endl;
}

void Car::Accel()
{
	if (fuelGauge <= 0)
		return;
	else
		fuelGauge -= CAR_CONST::FUEL_STEP;

	if ((curSpeed + CAR_CONST::ACC_STEP) >= CAR_CONST::MAX_SPD)
	{
		curSpeed = CAR_CONST::MAX_SPD;
		return;
	}
	curSpeed += CAR_CONST::ACC_STEP;
}

void Car::Break()
{
	if (curSpeed < CAR_CONST::BRK_STEP)
	{
		curSpeed = 0;
		return;
	}
	curSpeed -= CAR_CONST::BRK_STEP;
}

int main()
{
	char text[] = "run99";
	Car run99;
	run99.InitMembers(text, 100);
	run99.Accel();
	run99.Accel();
	run99.Accel();
	run99.ShowCarState();
	run99.Break();
	run99.ShowCarState();
	return 0;
}

1번

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

class Calculator
{
private:
	float x, y;
	int ac,dc,mic,muc;

public:

	void Init()
	{
		ac = 0;
		dc = 0;
		mic = 0;
		muc = 0;
	}

	float Add(float x, float y)
	{
		ac++;
		return x + y;
		
	}
	float Div(float x, float y)
	{
		dc++;
		return x / y;
	}
	float Min(float x, float y)
	{
		mic++;
		return x - y;

	}
	float Mul(float x, float y)
	{
		muc++;
		return x * y;
	}
	void ShowOpCount()
	{
		cout << "덧셈: " << ac << " " << "뺄셈: " << mic << " " << "곱셈: " << muc << " " << "나눗셈: " << dc << endl;
	}
};

int main()
{
	Calculator cal;
	cal.Init();
	cout << "3.2 + 2.4 = " << cal.Add(3.2, 2.4) << endl;
	cout << "3.5 / 1.7 = " << cal.Div(3.5, 1.7) << endl;
	cout << "2.2 - 1.5 = " << cal.Min(2.2, 1.5) << endl;
	cout << "4.9 / 1.2 = " << cal.Div(4.9, 1.2) << endl;
	cal.ShowOpCount();
	return 0;
}

2번

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;

class Printer
{
private:
	char temp[100];

public:

	void SetString(char* arr)
	{
		strcpy(temp, arr);
	}
	void ShowString()
	{
		cout << temp << endl;
	}

};
int main()
{	
	char text1[] = "hello world!";
	char text2[] = "I love c++";

	Printer pnt;
	pnt.SetString(text1);
	pnt.ShowString();

	pnt.SetString(text2);
	pnt.ShowString();

	return 0;
}

 

반응형