C++/기초를 탄탄히 세워주는 C++ 프로그래밍 입문(황준하 저) 16

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 15장 연습문제

[15.1] /*다음과 같은 구조체 Point가 있다.auto_ptr를 사용하여 Point 구조체 변수를 동적으로 생성하는 main 함수를 작성해 본다.struct Point{ int x, y;};auto_ptr의 실제 타입으로 구조체가 올 경우를 대비하여 -> 연산자를 준비해 두고 잇다고 하였다.여기서는 -> 연산자를 사용해보도록 한다*/#include #include using namespace std; struct Point{ int x, y;}; int main(void){ auto_ptr p(new Point); p->x = 5; p->y = 5; cout

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 14장 연습문제

[14.1] /*사용자로부터 1부터 10까지의 정수 중 하나를 입력받고 제곱값을 출력하려고 한다.사용자가 이 범위를 벗어난 정수값을 입력할 경우, 예외 처리를 통해 잘못 입력하였음을 알리도록 한다*/#include using namespace std; int main(void){ int num; cout > num; try { if (num < 0 || num>9) throw num; cout > x >> y;; try { if (y == 0) throw 1; if (x 1) throw "예외"; cout 연산자 내에서 원하는 값(0 이상)이 입력되지 못할 경우 예외를 발생시켜 본다.CPoint 클래스를 사용하는 main 함수에서는 예외 발생 시 이 예외를 처리할 수 있어야 한다.*/#include us..

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 13장 연습문제

[13.1]/*CPoint 객체를 원소로 갖는 vector 객체를 만들려고 한다.사용자는 CPoint 객체의 (x, y) 값을 계속해서 입력할 것이다.만약 (0, 0)이 입력된다면 입력이 종료됨을 의미한다.사용자가 입력한 CPoint 객체를 vector 객체의 원소로 추가하도록 한다.*/#include #include using namespace std; class CPoint{private: int x; int y;public: CPoint(int a = 0, int b = 0) :x(a), y(b) { } void Print() { cout > num >> place; if (num == 0) break; if (place == 0) MyList.push_front(num); else if (plac..

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 12장 연습문제

[12.1] /*실행 결과와 같이 1부터 10까지의 값들에 대한 제곱값과 나누기 3을 한 값을 "out1.txt" 파일로 출력해본다각 출력값들에 대해 적절한 크기의 필드를 지정하고 오른쪽 정렬로 출력하도록 한다.나누기 3을 한 값의 결과는 실수로 처리될 수 있어야 하며 소수점 이하 첫 번째 자리까지만 출력하도록 한다*/#include #include using namespace std; int main(void){ ofstream fout("out1.txt"); //출력 스트림 생성 및 파일 열기 if (!fout) { cout > std.dpt; fout.write((char*)&std, sizeof(std)); } fout.close(); cout

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 10장 연습문제

[10.1]/*2개의 매개 변수 값을 교환하는 Swap 함수를 함수 템플릿으로 만들고 이를 테스트하기 위한main 함수도 작성해 본다. 실매개 변수의 값도 교환되어야 한다.함수 템플릿을 연습할 수 있는 기본적인 문제이다.어려움이 있다면 int형을 위한 swap 함수를 먼저 작성한 후 템ㅍ프릿 매개 변수로 바뀌어야 될 부분을 생각해 본다*/#include using namespace std; template void Swap(T &a, T &b){ T temp = a; a = b; b = temp;} int main(void){ int num1 = 10, num2 = 20; cout

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 9장 연습문제

[9.1]/*그림 9.1과 같은 클래스 구성에 있어서 클래스 객체들 간의 복사 생성이 수행되는지테스트해보도록 한다. 다음과 같은 코드가 수행 가능한지 생각해보면 된다*/#include using namespace std; #define PI 3.14 class CPoint //임의로 추가한 CPoint 객체{private: int x; int y;public: CPoint(int a = 0, int b = 0) :x(a), y(b) { } CPoint &operator=(const CPoint &Po) { cout

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 8장 연습문제

[8.1]/*다음 프로그램에서 잘못된 부분을 지적하고 수정해 본다.현재 상속 액세스 지정자가 public으로 되어 있다.엑세스 지정자가 protected와 private일 때는 어떻게 달라지는지 생각해 본다*/#include using namespace std; class Base{//private:public: int a;//protected:public: int b;public: int c;}; class Derived :public Base{private: //int d; //Derived 클래스 내에서는 접근 가능 void func1() { a = 1; //public 상속을 하더라도 Base 클래스의 private 멤버 접근 불가 b = 2; c = 3; d = 4; e = 5; f = 6; }..

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 7장 연습문제

[7.1]/*예제 7.1에서 CPoint 클래스에 덧셈뿐만 아니라 뺄셈(Sub), 부호반대(Invert), 이동(Move),1씩 증가(Inc)를 위한 멤버 함수들을 추가해본다.main 함수와 실행 결과를 참고한다*/#include using namespace std; class CPoint{private: int x; int y;public: CPoint(int a = 0, int b = 0) :x(a), y(b) { } CPoint Sum(const CPoint &Po) { return CPoint(x + Po.x, y + Po.y); } CPoint Sub(const CPoint &Po) { return CPoint(x - Po.x, y - Po.y); } CPoint Invert() { return..

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 6장 연습문제

[6.1]/*다음 프로그램의 문제점이 무엇인지 메모리 구조와 관련하여 설명해 본다*/#include using namespace std; class CArray{private: int *ary; int count;public: CArray(int c = 1) { count = c; ary = new int[count]; for (int i = 0; i < count; i++) ary[i] = i; } //이 문장을 추가하면 오류 해결(main문에서 delete Ary1을 해줘야한다) /* CArray(const CArray &copy) { count = copy.count; ary = new int[count]; for (int i = 0; i < count; i++) ary[i] = i; } */ ~C..