Programming/C++

열혈 c++ Chapter02 문제02-3 , 02-4 문제1 , 문제2, Chapter03 예제 (참조자,상수값)

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

열혈 c++ Chapter02 문제02-3

#include <iostream>
using namespace std;

typedef struct __point
{
	int xpos;
	int ypos;
}point;

point& pntadder(const point& p1, const point& p2)
{
	point* pptr = new point;
	pptr->xpos = p1.xpos + p2.xpos;
	pptr->ypos = p1.ypos + p2.ypos;
	return *pptr;
}

int main()
{
	point* pptr1 = new point;
	pptr1->xpos = 3;
	pptr1->ypos = 30;

	point* pptr2 = new point;
	pptr2->xpos = 70;
	pptr2->ypos = 7;

	point& pref = pntadder(*pptr1, *pptr2);
	cout << "[" << pref.xpos << "," << pref.ypos << "]" << endl;

	delete pptr1;
	delete pptr2;
	delete& pref;

	return 0;
}

02-4 문제1

#include <iostream>
using namespace std;

typedef struct __point
{
	int xpos;
	int ypos;
}point;

point& pntadder(const point& p1, const point& p2)
{
	point* pptr = new point;
	pptr->xpos = p1.xpos + p2.xpos;
	pptr->ypos = p1.ypos + p2.ypos;
	return *pptr;
}

int main()
{
	point* pptr1 = new point;
	pptr1->xpos = 3;
	pptr1->ypos = 30;

	point* pptr2 = new point;
	pptr2->xpos = 70;
	pptr2->ypos = 7;

	point& pref = pntadder(*pptr1, *pptr2);
	cout << "[" << pref.xpos << "," << pref.ypos << "]" << endl;

	delete pptr1;
	delete pptr2;
	delete& pref;

	return 0;
}

문제2

#define _CRT_SECURE_NO_WANRINGS
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main()
{
	srand(time(NULL));

	int num = 0;

	for (int i = 1; i <= 5; i++)
	{
		num = rand() % 100;
		cout << i << "번째난수: " << num << endl;
	}

	return 0;
}

Chapter03 예제 (참조자,상수값) 

#include <iostream>
using namespace std;

#define ID_LEN	20
#define MAX_SPD 200
#define FUEL_STEP 2
#define ACC_STEP 10
#define BRK_STEP 10

struct Car
{
	char gamerID[ID_LEN];
	int fuelGauge;
	int curSpeed;
};

void ShowCarState(const Car& car)	//이 함수는 보여주는 용도의 함수이기때문에 이함수내에서 값을 변경해서는 안된다 그러므로 const 사용
{
	cout << "소유자ID: " << car.gamerID << endl;
	cout << "연료량: " << car.fuelGauge << "%" << endl;
	cout << "현재속도:" << car.curSpeed << "km/s" << endl << endl;
}

void Accel(Car& car)	// 구조체 안의 3개의 값들을 참조자를 통해서 한번에 매개변수로활용
{
	if (car.fuelGauge <= 0)
		return;		//그냥 넘어감
	else
		car.fuelGauge -= FUEL_STEP;

	if (car.curSpeed + ACC_STEP >= MAX_SPD)
	{
		car.curSpeed = MAX_SPD;
		return;
	}
	car.curSpeed += ACC_STEP;
}


void Break(Car& car)
{
	if (car.curSpeed < BRK_STEP)
	{
		car.curSpeed = 0;
		return;
	}
	car.curSpeed -= BRK_STEP;
}

int main()
{
	Car run99 = { "run99",100,0 };
	Accel(run99);
	Accel(run99);
	ShowCarState(run99);
	Break(run99);
	ShowCarState(run99);

	Car sped77 = { "sped77",100,0 };
	Accel(sped77);
	Break(sped77);
	ShowCarState(sped77);

	return 0;
}
반응형