목록2024/03 (32)
Minwoo Dev.
문제 Chapter 03에서 제시한 과일장수 시뮬레이션 예제 FruitSaleSim1.cpp에서 정의한 두 클래스의 멤버변수는 private로 선언이 되어있다. 그러나 다음 조건을 유지할 수 있는 장치는 아무것도 되어있지 않다. 사과의 구매를 목적으로 0보다 작은 수를 전달할 수 없다. 위의 제약사항을 항상 만족시킬 수 있도록 예제를 변경하고, 예제의 안전성을 높일 수 있도록 일부 함수를 const로 선언해보자. FruitSaleSim1.cpp #include using namespace std; class FruitSeller { private: int APPLE_PRICE; int numOfApples; int myMoney; public: void InitMembers(int price, int n..
문제 1 계산기 기능의 Calculator 클래스를 정의해 보자. 기본적으로 지니는 기능은 덧셈, 뺄셈, 곱셈, 그리고 나눗셈이며, 연산을 할 때마다 어떠한 연산을 몇 번 수행했는지 기록되어야 한다. 아래의 main 함수와 실행의 예에 부합하는 Calculator 클래스를 정의하면 된다. 단, 멤버변수는 private로, 멤버함수는 public으로 선언하자. 이렇게 선언하는 이유에 대해서는 다음 Chapter에서 자세히 언급한다. int main(void) { Calculator Cal; cal.Init(); cout
문제 2차원 평면상에서의 좌표를 표현할 수 있는 구조체를 다음과 같이 정의하였다. struct Point { int xpos; int ypos; }; 위의 구조체를 기반으로 다음의 함수를 정의하고자 한다. (자세한 기능은 실행의 예를 통해서 확인하도록 한다.) void MovePos(int x, int y); // 점의 좌표이동 void AddPoint(const Point &pos); // 점의 좌표증가 void ShowPosition();// 현재 x,y 좌표정보 출력 단, 위의 함수들을 구조체 안에 정의를 해서 다음의 형태로 main 함수를 구성할 수 있어야 한다. int main(void) { Point pos1 = {12, 4}; Point pos2 = {20, 30}; pos1.MovePos(..
문제 1 다음 표준함수를 호출하는 예제를 만들되, C++의 헤더를 선언해서 만들어보자. 그리고 예제의 내용은 상관이 없지만, 아래의 함수들을 최소 1회 이상 호출해야 한다. 참고로 다음 함수들은 C언어의 경우 에 선언되어 있다. strlen : 문자열의 길이 계산 strcat : 문자열의 뒤에 덧붙이기 strcpy : 문자열 복사 strcmp : 문자열의 비교 정답 #include #include using namespace std; int main(void) { char *s1 = "Hello World!"; char *s2 = "HI There!"; char s3[50]; cout
문제 구조체에 대한 복습을 겸할 수 있는 문제를 제시하겠다. 2차원 평면상에서의 좌표를 표현할 수 있는 구조체를 다음과 같이 정의하였다. typedef struct __Point { int xpos; int ypos; } Point; 위의 구조체를 기반으로 두 점의 합을 계산하는 함수를 다음의 형태로 정의하고(덧셈결과는 함수와 반환을 통해서 얻게 한다.) Point& PntAdder(const Point &p1, const Point &p2); 임의의 두 점을 선언하여, 위 함수를 이용한 덧셈연산을 진행하는 main 함수를 정의해보자. 단, 구조체 Point 관련 변수의 선언은 무조건 new 연산자를 이용하여 진행하여야 하며, 할당된 메모리 공간의 소멸도 철저해야 한다. 참고로 이 문제의 해결을 위해서는..
문제 const 포인터에 대한 복습을 겸할 수 있는 문제를 제시하겠다. 다음의 상수 선언을 보자. const int num = 12; 포인터 변수를 선언해서 위 변수를 가리키게 해보자. 그리고 이 포인터 변수를 참조하는 참조자를 하나 선언하자. 마지막으로 이렇게 선언된 포인터 변수와 참조자를 이용해서 num에 저장된 값을 출력하는 예제를 완성해보자. 정답 #include using namespace std; int main(void) { const int num = 12; const int *ptr = # const int *(&ref) = ptr; cout
문제 1 참조자를 이용해서 다음 요구사항에 부합하는 함수를 각각 정의하여라. 인자로 전달된 int 형 변수의 값을 1씩 증가시키는 함수 인자로 전달된 int형 변수의 부호를 바꾸는 함수 그리고 위의 각 함수를 호출하여 그 결과를 확인하는 main함수까지 작성하여라. 정답 #include using namespace std; void Addone(int *num) { *num += 1; } void changeSign(int *num) { *num *= (-1); } int main(void) { int num = 20; Addone(&num); cout
문제 "은행계좌 관리 프로그램"을 구현할 것이다. 프로젝트 01단계에서는 C 스타일로 구현하는 것을 목표로 한다. 구현할 기능은 다음과 같다. 기능 1 : 계좌 개설 기능 2 : 입 금 기능 3 : 출 금 기능 4 : 전체고객 잔액조회 그리고 프로그램을 간결하게 하기 위해 몇가지 가정을 하겠다. 가정의 내용은 다음과 같다. 통장의 계좌번호는 중복되지 아니한다. (중복검사 하지 않겠다는 뜻) 입금 및 출금액은 무조건 0보다 크다. (입금 및 출금액의 오류검사 하지 않겠다는 뜻 고객의 계좌정보는 계좌번호, 고객이름, 고객의 잔액, 이렇게 세가지만 저장 및 관리한다. 둘 이상의 고객정보 저장을 위해서 배열을 사용한다. 계좌번호는 정수의 형태이다. 내가 구현한 코드 #include using namespace ..
문제 앞서 소개한 예제 NameSp2.cpp를 다음과 같이 총 3개의 파일로 분할하여 컴파일 해보자. 헤더파일 : main 함수를 제외한 나머지 두 함수의 선언을 삽입한다. 소스파일1 : main 함수를 제외한 나머지 두 함수의 정의를 삽입한다. 소스파일2 : main 함수만 삽입한다. 파일의 이름은 여러분이 임의로 정해도 된다. 하지만, 각 파일에 들어갈 내용은 위의 지시대로 진행해야 한다. NameSp2.cpp #include namespace BestComImpl { void SimpleFunc(void); } namespace ProgComImpl { void SimpleFunc(void); } int main(void) { BestComImpl::SimpleFunc(); ProgComImpl::..
문제 1 예제 DefaultValue3.cpp에 정의된 함수 BoxVolume를 '매개변수의 디폴트 값 지정' 형태가 아닌, '함수 오버로딩'의 형태로 재 구현해보자. 물론 main 함수는 변경하지 않아야 하며, 실행결과도 동일해야 한다. DefaultValue3.cpp #include int BoxVolume(int length, int width = 1, int height = 1); int main(void) { std::cout