C++ Programming Ch.8 Exercise 9 Solution

Problem: 비행기 예약 프로그램을 작성하라. 이 문제는 여러 개의 클래스와 객체들을 다루는 연습을 위한 것이다. 클래스 사이의 상속 관계는 없다. 항공사 이름은 '한성항공'이고, 8개의 좌석을 가진 3대의 비행기로 서울 부산 간 운항 사업을 한다. 각 비행기는 하루에 한 번만 운항하며 비행시간은 07시, 12시, 17시이다. 비행기 예약 프로그램은 다음의 기능을 가진다. ● 예약 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받아 예약한다. ● 취소 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받고 예약을 취소한다. ...

March 9, 2020 · 3 min · Sobamemil

C++ Programming Ch.8 Exercise 8 Solution

Problem: 다음 그림과 같은 상속 구조를 갖는 클래스를 설계한다. 모든 프린터는 모델명(model), 제조사(manufacturer), 인쇄 매수(printedCount), 인쇄 종이 잔량(availableCount)을 나타내는 정보와 print(int pages) 멤버 함수를 가지며, print()가 호출할 때마다 pages 매의 용지를 사용한다. 잉크젯 프린터는 잉크 잔량(availableInk) 정보와 printInkJet(int pages) 멤버 함수를 추가적으로 가지며, 레이저 프린터는 토너 잔량(availableToner) 정보와 역시 printLaser(int pages) 멤버 함수를 추가적으로 가진다. 각 클래스에 적절한 접근 지정으로 멤버 변수와 함수, 생성자, 소멸자를 작성하고, 다음과 같이 실행되도록 전체 프로그램을 완성하라. ...

March 9, 2020 · 3 min · Sobamemil

C++ Programming Ch.8 Exercise 7 Solution

Problem: 아래와 같은 BaseMemory 클래스를 상속받는 ROM(Read Only Memory), RAM 클래스를 작성하라. BaseMemory에 필요한 코드를 수정 추가하여 적절히 완성하라. 1 2 3 4 5 class BaseMemory{ char *mem; protected: BaseMemory(int size) { mem = new char [size]; } }; ROM은 읽기 전용 메모리이므로 작동 중에 값을 쓸 수가 없기 때문에, 공장에서 생산할 때 생산자가 요청한 데이터로 초기화 하는데 이 작업을 굽는다(burn)라고 한다. 그러므로 ROM은 반드시 생성자에서 burn 작업이 일어나야 한다. ...

March 9, 2020 · 2 min · Sobamemil

C++ Programming Ch.8 Exercise 6 Solution

Problem: 문제 5~6에 적용되는 BaseArray 클래스는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 class BaseArray { int capacity; // 배열의 크기 int *mem; // 정수 배열을 만들기 위한 메모리의 포인터 protected: // 생성자가 protected BaseArray(int capacity=100){ this->capacity = capacity; mem = new int [capacity]; } ~BaseArray() { delete [] mem; } void put(int index, int val) { mem[index] = val; } int get(int index) { return mem[index]; } int getCapacity() { return capacity; } }; Write a 스택으로 작동하는 MyStack class that inherits from the BaseArray class. ...

March 9, 2020 · 3 min · Sobamemil

C++ Programming Ch.8 Exercise 5 Solution

Problem: 문제 5~6에 적용되는 BaseArray 클래스는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 class BaseArray { int capacity; // 배열의 크기 int *mem; // 정수 배열을 만들기 위한 메모리의 포인터 protected: // 생성자가 protected BaseArray(int capacity=100){ this->capacity = capacity; mem = new int [capacity]; } ~BaseArray() { delete [] mem; } void put(int index, int val) { mem[index] = val; } int get(int index) { return mem[index]; } int getCapacity() { return capacity; } }; BaseArray를 상속받아 큐처럼 작동하는 MyQueue 클래스를 작성하라. ...

March 9, 2020 · 3 min · Sobamemil

C++ Programming Ch.8 Exercise 4 Solution

Problem: 문제 3~4에 적용되는 2차원 상의 한 점을 표현하는 Point 클래스가 있다. 1 2 3 4 5 6 7 8 9 class Point { int x,y; public: point(int x, int y) { this->x = x; this->y = y; } int getX(){ return x; } int getY(){ return y; } protected: void move(int x, int y) { this->x = x; this->y = y; } }; 다음 main() 함수가 실행되도록 Point 클래스를 상속받는 ColorPoint 클래스를 작성하고, 전체 프로그램을 완성하라. ...

March 9, 2020 · 2 min · Sobamemil

C++ Programming Ch.8 Exercise 3 Solution

Problem: 문제 3~4에 적용되는 2차원 상의 한 점을 표현하는 Point 클래스가 있다. 1 2 3 4 5 6 7 8 9 class Point { int x,y; public: point(int x, int y) { this->x = x; this->y = y; } int getX(){ return x; } int getY(){ return y; } protected: void move(int x, int y) { this->x = x; this->y = y; } }; 다음 main() 함수가 실행되도록 Point 클래스를 상속받은 ColorPoint 클래스를 작성하고, 전체 프로그램을 완성하라. ...

March 9, 2020 · 2 min · Sobamemil

C++ Programming Ch.8 Exercise 2 Solution

Problem: 문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다. 1 2 3 4 5 6 7 8 class Circle{ int radius; public: Circle(int radius=0) { this->radius = radius; } int getRadius() { return radius; } void setRadius(int radius) { this->radius = radius; } double getArea() { return 3.14*radius*radius; } }; 다음과 같이 배열을 선언하여 다음 Execution Result가 나오도록 Circle을 상속받은 NamedCircle 클래스와 main() 함수 등 필요한 함수를 작성하라. ...

March 9, 2020 · 2 min · Sobamemil

C++ Programming Ch.8 Exercise 1 Solution

Problem: 문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다. 1 2 3 4 5 6 7 8 class Circle{ int radius; public: Circle(int radius=0) { this->radius = radius; } int getRadius() { return radius; } void setRadius(int radius) { this->radius = radius; } double getArea() { return 3.14*radius*radius; } }; 다음 코드가 실행되도록 Circle을 상속받은 NamedCircle 클래스를 작성하고 전체 프로그램을 완성하라. 1 2 NamedCircle waffle(3, "waffle"); // 반지름이 3이고 이름이 waffle인 원 waffle.show(); Execution Result: ...

March 9, 2020 · 2 min · Sobamemil

C++ Programming Ch.7 Exercise 12 Solution

Problem: 정수 배열을 항상 증가 순으로 유지하는 SortedArray 클래스를 작성하려고 한다. 아래의 main() 함수가 작동할 만큼만 SortedArray 클래스를 작성하고 +와 = 연산자도 작성하라. 1 2 3 4 5 6 7 8 9 10 11 12 13 class SortedArray{ int size; // 현재 배열의 크기 int *p; // 정수 배열에 대한 포인터 void sort(); // 정수 배열을 오름차순으로 정렬 public: SortedArray(); // p는 NULL로 size는 0으로 초기화 SortedArray(SortedArray& src); // 복사 생성자 SortedArray(int p[], int size); // 생성자. 정수 배열과 크기를 전달받음 ~SortedArray(); // 소멸자 SortedArray operator+ (SortedArray& op2); // 현재 배열에 op2 배열 추가 SortedArray& operator= (const SortedArray& op2); // 현재 배열에 op2 배열 복사 void show(); // 배열의 원소 출력 }; 1 2 3 4 5 6 7 8 9 10 11 12 int main() { int n[] = { 2, 20, 6 }; int m[] = { 10, 7, 8, 30 }; SortedArray a(n, 3), b(m, 4), c; c = a + b; // +, = 연산자 작성 필요 // + 연산자가 SortedArray 객체를 리턴하므로 복사 생성자 필요 a.show(); b.show(); c.show(); } Execution Result: ...

March 6, 2020 · 3 min · Sobamemil