C++
-
명품 C++ 3장 Open ChallengeC++ 2018. 10. 29. 00:09
지수 표현 클래스 만들기 실수의 지수 표현을 클래스 Exp로 작성하라. Exp를 이용하는 main() 함수와 실행 결과는 다음과 같다. 클래스 Exp를 Exp.h 헤더 파일과 Exp.cpp 파일로 분리하여 작성하라. 소스코드 Exp.h #ifndef EXP_H#define EXP_Hclass Exp { int base, exp;public: Exp(); Exp(int b); Exp(int b, int e); int getValue(); // 지수를 정수로 계산하여 리턴 int getBase(); // 베이스 값 리턴 int getExp(); // 지수 값 리턴 bool equals(Exp b); // 이 객체와 객체 b의 값이 같은지 판별하여 리턴};#endifExp.cpp #include using n..
-
명품 C++ 3장 12번C++ 2018. 10. 28. 23:50
12. 컴퓨터의 주기억장치를 모델링하는 클래스 Ram을 구현하려고 한다. Ram 클래스는 데이터가 기록될 메모리 공간과 크기 정보를 가지고, 주어진 주소에 데이터를 기록하고(write), 주어진 주소로부터 데이터를 읽어 온다(read). 실행 결과를 참고하여 Ram.h Ram.cpp main.cpp로 헤더 파일과 cpp 파일을 분리하여 프로그램을 완성하라. 소스코드 Ram.h #ifndef RAM_H#define RAM_Hclass Ram { char mem[100 * 1024]; // 100kb 메모리. 한 번지는 한 바이트이므로 char 타입 사용. int size;public: Ram(); // mem 배열을 0으로 초기화 하고 size를 100*1024로 초기화 ~Ram(); // "메모리 제거됨..
-
명품 C++ 3장 11번C++ 2018. 10. 28. 23:45
11. 다음 코드에서 Box 클래스의 선언부와 구현부를 Box.h, Box.cpp 파일로 분리하고 main() 함수 부분을 main.cpp로 분리하여 전체 프로그램을 완성하라. 소스코드 Box.h #ifndef BOX_H#define BOX_Hclass Box { int width, height; char fill; // 박스의 내부를 채우는 문자public: Box(int w, int h) { setSize(w, h); fill = '*'; } void setFill(char f) { fill = f; } void setSize(int w, int h) { width = w; height = h; } void draw(); // 박스 그리기};#endif Box.cpp #include using nam..
-
명품 C++ 3장 10번C++ 2018. 10. 28. 23:33
10. 다수의 클래스를 선언하고 활용하는 간단한 문제이다. 더하기(+), 빼기(-), 곱하기(*), 나누기(/)를 수행하는 4개의 클래스 Add, Sub, Mul, Div를 만들고자 한다. 이들은 모두 공통으로 다음 멤버를 가진다.- int 타입 변수 a, b : 피연산자- void setValue(int x, int y) 함수 : 매개 변수 x, y를 멤버 a, b에 복사- int calcuate() 함수 : 연산을 실행하고 결과를 리턴 main() 함수는 Add, Sub, Mul, Div 클래스 타입의 객체 a, s, m, d를 생성하고, 아래와 같이 키보드로부터 두 개의 정수와 연산자를 입력받고, a, s, m, d 객체 중에서 연산을 처리할 객체의 setValue() 함수를 호출한 후, calcu..
-
명품 C++ 3장 9번C++ 2018. 10. 28. 15:43
9. Oval 클래스는 주어진 사각형에 내접하는 타원을 추상화한 클래스이다. Oval 클래스의 멤버는 모두 다음과 같다. Oval 클래스를 선언부와 구현부로 나누어 작성하라. - 정수값의 사각형 너비와 높이를 가지는 width, height 변수 멤버- 너비와 높이 값을 매개 변수로 받는 생성자- 너비와 높이를 1로 초기화하는 매개 변수 없는 생성자- width와 height를 출력하는 소멸자- 타원의 너비를 리턴하는 getWidth() 함수 멤버- 타원의 높이를 리턴하는 getHeight() 함수 멤버- 타원의 너비와 높이를 변경하는 set(int w, int h) 함수 멤버- 타원의 너비와 높이를 화면에 출력하는 show() 함수 멤버 소스코드 #include using namespace std;cl..
-
명품 C++ 3장 8번C++ 2018. 10. 28. 15:30
8. int 타입의 정수를 객체화한 Integer 클래스를 작성하라. Integer의 모든 멤버 함수를 자동 인라인으로 작성하라. Integer 클래스를 활용하는 코드는 다음과 같다. 소스코드 #include #include #define TRUE 1#define FALSE 0using namespace std;class Integer { int n;public: Integer(int n); Integer(string n); void set(int n); int get(); int isEven();};inline Integer::Integer(int n) { this->n = n;}inline Integer::Integer(string n) { this->n = stoi(n);}inline void In..
-
명품 C++ 3장 7번C++ 2018. 10. 28. 15:25
7. 문제 5번을 참고하여 생성자를 이용하여 짝수 홀수를 선택할 수 있도록 SelectableRandom 클래스를 작성하고 짝수 10개, 홀수 10개를 랜덤하게 발생시키는 프로그램을 작성하라. 소스코드 #include #include #include using namespace std;class SelectableRandom { int sw;public: SelectableRandom(int sw); int next(); int nextInRange(int a, int b);};SelectableRandom::SelectableRandom(int sw) { this->sw = sw; //짝수인지 홀수인지 판별하는 변수 srand((unsigned)time(0));}int SelectableRandom::..
-
명품 C++ 3장 6번C++ 2018. 10. 28. 15:21
6. 문제 5번을 참고하여 짝수 정수만 랜덤하게 발생시키는 EvenRandom 클래스를 작성하고 EvenRandom 클래스를 이용하여 10개의 짝수를 랜덤하게 출력하는 프로그램을 완성하라. 0도 짝수로 처리한다. 소스코드 #include #include #include using namespace std;class EvenRandom {public: EvenRandom(); int next(); int nextInRange(int x, int y);};EvenRandom::EvenRandom() { srand((unsigned)time(0));}int EvenRandom::next() { int n = rand(); if (n % 2 == 0) return n; else return n - 1;}int ..