C++
-
명품 C++ 10장 1번C++ 2018. 11. 16. 22:20
1. 배열을 받아 가장 큰 값을 리턴하는제네릭 함수 biggest()를 작성하라. 또한 main() 함수를 작성하여 biggest()를 호출하는 몇 가지 사례를 보여라. 소스코드 #include using namespace std;template T biggest(T x[],int n) { T big = x[0]; for (int i = 1; i < n; ++i) { if (big < x[i]) big = x[i]; } return big;}int main() { int x[] = { 1,10,100,5,4 }; double y[] = { 1.1,2.25,5.15,5.3,6.6 }; char z[] = { 'a','d','z','t','w' }; cout
-
명품 C++ 9장 Open ChallengeC++ 2018. 11. 7. 23:53
Human의 Food 먹기 게임 게임에는 Human, Monster, Food의 세 객체가 등장하며, 이들은 10x20 격자판에서 각각 정해진 규칙에 의해 움직인다. Human 객체는 사용자의 키에 의해 왼족(a 키), 아래(s 키), 위(d 키), 오른쪽(f 키)으로 한 칸씩 움직이고, Monster는 한 번에 2칸씩, 왼쪽, 아래, 위, 오른쪽 방향으로 랜덤하게 움직인다. Food는 5번 중에 3번은 제자리에 있고, 나머지 2번은 4가지 방향 중 랜덤하게 한 칸씩 움직인다.게임은 Human이 Monster를 피해 Food를 먹으면(Food의 위치로 이동) 성공으로 끝나고, Monster가 Food를 먹거나 Human이 Monster에게 잡히면 실패로 끝난다. 다음은 각 객체의 이동을 정의하는 move..
-
명품 C++ 9장 10번C++ 2018. 11. 7. 23:38
10. 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 그래픽 편집기의 기능은 "삽입", "삭제", "모두보기", "종료"의 4가지이고, 실행 과정은 다음과 같다. 소스코드 #include #include using namespace std;class UI { // 화면 출력 및 키 입력 함수 static int n; // 무슨 기능을 할지 입력 받은 숫자public: static void start(); // 첫줄에 나오는 그래픽 에디터 입니다 출력 static int menu(); // 삽입 삭제 모두보기 종료 static int insert(); // 도형 삽입 static int del(); // 도형 삭제};int UI::n = 0;void UI::start() { cout > n; retur..
-
명품 C++ 9장 9번C++ 2018. 11. 7. 22:42
9. 다음 그림과 같은 상속 구조를 갖는 클래스를 설계한다. 모든 프린터는 모델명(model), 제조사(manufacturer), 인쇄 매수(printedConut), 인쇄 종이 잔량(availableCount)을 나타내는 정보를 가진다. print(int pages) 함수와 show() 함수는 가상 함수로 구현하라. print(int pages)는 pages 만큼 프린트하는 함수이고, show() 함수는 현재프린트의 모델, 제조사, 인쇄 매수, 인쇄 종이 잔량 등을 출력하는 함수이다.잉크젯 프린터는 잉크 잔량(availableInk) 정보를 추가적으로 가지며, 레이저 프린터는 토너 잔량(avialableToner) 정보를 추가적으로 가진다. 이들의 print(int pages) 멤버 함수는 프린터 타입..
-
명품 C++ 9장 7번 8번C++ 2018. 11. 6. 18:24
7~8 사각형에 내접하는 도형을 표현하기 위한 Shape 클래스가 있다. class Shape {protected: string name; // 도형의 이름 int width, height; // 도형이 내접하는 사각형의 너비와 높이public: Shape(string n = "", int w = 0, int h = 0) { name = n; width = w; height = h; } virtual double getArea() { return 0; } // dummy 값 리턴 string getName() { return name; } // 이름 리턴}; 7. Shape 클래스를 상속받아 타원을 표현하는 Oval, 사각형을 표현하는 Rect, 삼각형을 표현하는 Triangular 클래스를 작성하라. ..
-
명품 C++ 9장 6번C++ 2018. 11. 6. 18:23
6. 다음 AbstractSack 은 정수 스택 클래스로서 추상 클래스이다. class AbstractStack {public: virtual bool push(int n) = 0; // 스택에 n을 푸시한다. 스택이 full이면 false 리턴 virtual bool pop(int& n) = 0; // 스택에서 팝한 정수를 n에 저장하고 스택이 empty이면 false 리턴 virtual int size() = 0; // 현재 스택에 저장된 정수의 개수 리턴}; 이를 상속받아 정수를 푸시, 팝하는 IntStack 클래스를 만들고 사용 사례를 보여라. 소스코드 #include using namespace std;class AbstractStack {public: virtual bool push(int n..
-
명품 C++ 9장 5번C++ 2018. 11. 6. 18:05
5. 디지털 회로에서 기본적인 게이트로 OR 게이트, AND 게이트, XOR 게이트 등이 있다. 이들은 각각 두 입력 신호를 받아 OR 연산, AND 연산, XOR 연산을 수행한 결과를 출력한다. 이 게이트들은 각각 ORGate, XORGate, ANDGate 클래스로 작성하고자 한다. ORGate, XPRGate, ANDGate 클래스가 AbstractGate를 상속받도록 작성하라. AND 게이트OR 게이트 XOR 게이트 그림 출처 : http://chopisal.tistory.com/entry/%EB%85%BC%EB%A6%AC-%EA%B2%8C%EC%9D%B4%ED%8A%B8 소스코드 #include #include using namespace std;class AbstractGate { // 추상 ..
-
명품 C++ 9장 3번 4번C++ 2018. 11. 6. 17:26
3~4 다음 추상 클래스 LoopAdder가 있다. class LoopAdder { // 추상 클래스 string name; // 루프의 이름 int x, y, sum; // x에서 y까지의 합은 sum void read(); // x, y 값을 읽어 들이는 함수 void write(); // sum을 출력하는 함수protected: LoopAdder(string name = "") { // 루프의 이름을 받는다. 초깃값은 "" this->name = name; } int getX() { return x; } int getY() { return y; } virtual int calculate() = 0; // 순수 가상 함수. 루프를 돌며 합을 구하는 함수public: void run(); // 연산을 ..