명품 C++ programming 실습 문제 5장 10번

문제 : 참조를 리턴하는 코드를 작성해보자. 다음 코드와 실행 결과를 참고하여 append() 함수를 작성하고 전체 프로그램을 완성하라. append()는 Buffer 객체에 문자열을 추가하고 Buffer 객체에 대한 참조를 반환하는 함수이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Buffer{ string text; public: Buffer(string text) { this->text = text; } void add(string next) { text += next; } // text에 next 문자열 덧붙이기 void print() { cout << text << endl; } }; int main() { Buffer buf("Hello"); Buffer& temp = append(buf, "Guys"); // buf의 문자열에 "Guys" 덧붙임 temp.print(); // "HelloGuys" 출력 buf.print(); // "HelloGuys" 출력 } 실행 결과 : ...

2020년 3월 5일 · 1 분 · Sobamemil

명품 C++ programming 실습 문제 5장 9번

문제 : 클래스 Accumulator는 add() 함수를 통해 계속 값을 누적하는 클래스로서, 다음과 같이 선언된다. Accumulator 클래스를 구현하라. 1 2 3 4 5 6 7 class Accumulator{ int value; public: Accumulator(int value); // 매개 변수 value로 멤버 value를 초기화한다. Accumulator& add(int n); // value에 n을 더해 값을 누적한다. int get(); // 누적된 값 value를 리턴한다. }; Accumulator는 다음과 같이 main() 함수에 의해 활용된다. 1 2 3 4 5 int main() { Accumulator acc(10); acc.add(5).add(6).add(7); // acc의 value 멤버가 28이 된다. cout << acc.get(); // 28 출력 } 실행 결과 : ...

2020년 3월 5일 · 2 분 · Sobamemil

명품 C++ programming 실습 문제 5장 8번

문제 : 문제 7번의 MyIntStack을 수정하여 다음과 같이 선언하였다. 스택에 저장할 수 있는 정수의 최대 개수는 생성자에서 주어지고 size 멤버에 유지한다. MyIntStack 클래스를 작성하라. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class MyIntStack{ int *p; // 스택 메모리로 사용할 포인터 int size; // 스택의 최대 크기 int tos; // 스택의 탑을 가리키는 인덱스 public: MyIntStack(); MyIntStack(int size); MyIntStack(const MyIntStack& s); // 복사 생성자 ~MyIntStack(); bool push(int n); // 정수 n을 스택에 푸시한다. // 스택이 꽉 차 있으면 false를, 아니면 true 리턴 bool pop(int &n); // 스택의 탑에 있는 값을 n에 팝한다. // 만일 스택이 비어 있으면 false를, 아니면 true 리턴 }; MyIntStack 클래스를 활용하는 코드와 실행 결과는 다음과 같다. ...

2020년 3월 5일 · 3 분 · Sobamemil

명품 C++ programming 실습 문제 5장 7번

문제 : 다음과 같이 선언된 정수를 저장하는 스택 클래스 MyIntStack을 구현하라. MyIntStack 스택에 저장할 수 있는 정수의 최대 개수는 10이다. 1 2 3 4 5 6 7 8 class MyIntStack{ int p[10]; // 최대 10개의 정수 저장 int tos; // 스택의 꼭대기를 가리키는 인덱스 public: MyIntStack(); bool push(int n); // 정수 n 푸시. 꽉 차 있으면 false, 아니면 true 리턴 bool pop(int &n); // 팝하여 n에 저장. 스택이 비어 있으면 false, 아니면 true 리턴 }; MyIntStack 클래스를 활용하는 코드와 실행 결과는 다음과 같다. ...

2020년 3월 5일 · 3 분 · Sobamemil

명품 C++ programming 실습 문제 5장 6번

문제 : find() 함수의 원형은 다음과 같다. 문자열 a에서 문자 c를 찾아, 문자 c가 있는 공간에 대한 참조를 리턴한다. 만일 문자 c를 찾을 수 없다면 success 참조 매개 변수에 false를 설정한다. 물론 찾게 되면 success에 true를 설정한다. 1 char& find(char a[], char c, bool& success); 다음 main()이 잘 실행되도록 find()를 작성하라. 1 2 3 4 5 6 7 8 9 10 11 int main() { char s[] = "Mike"; bool b = false; char& loc = find(s, 'M', b); if(b == false) { cout << "M을 발견할 수 없다" << endl; return 0; } loc = 'm'; // 'M' 위치에 'm' 기록 cout << s << endl; // "mike"가 출력됨 } 실행 결과 : ...

2020년 3월 5일 · 2 분 · Sobamemil

명품 C++ programming 실습 문제 5장 5번

문제 : 다음 Circle 클래스가 있다. 1 2 3 4 5 6 7 8 class Circle{ int radius; public: Circle(int r) {radius =r;} int getRadius() {return radius;} void setRadius(int r) {radius = r;} void show() {cout << "반지름이 " << radius << "인 원" << endl;} }; Circle 객체 b를 a에 더하여 a를 키우고자 다음 함수를 작성하였다. 1 2 3 4 void increaseBy(Circle a, Circle b) { int r = a.getRadius() + b.getRadius(); a.setRadius(r); } 다음 코드를 실행하면 increaseBy() 함수는 목적대로 실행되는가? ...

2020년 3월 5일 · 2 분 · Sobamemil

명품 C++ programming 실습 문제 5장 4번

문제 : 아래와 같이 원형이 주어진 bigger()를 작성하고 사용자로부터 2개의 정수를 입력받아 큰 값을 출력하는 main()을 작성하라. bigger()는 인자로 주어진 a, b가 같으면 true, 아니면 false를 리턴하고 큰 수는 big에 전달한다. 1 bool bigger(int a, int b, int& big); 실행 결과 : 목적 및 힌트 : 참조에 의한 호출 연습 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; bool bigger(int a, int b, int& big){ if(a==b) return true; else { if(a>b) big = a; else big = b; return false; } } int main() { int a, b, big; cout << "두개의 정수를 입력하세요>>"; cin >> a >> b; if(!bigger(a, b, big)) cout << "큰 수는 : " << big; else cout << "두 정수가 같습니다."; } 설명 : ...

2020년 3월 5일 · 1 분 · Sobamemil

명품 C++ programming 실습 문제 5장 3번

문제 : 다음과 같이 작동하도록 combine() 함수를 작성하라. 1 2 3 4 5 6 int main() { string text1("I love you"), text2("very much"); string text3; // 비어있는 문자열 combine(text1, text2, text3); // text1과 " ", 그리고 text2를 덧붙여 text3 만들기 cout << text3; // "I love you very much" 출력 } 실행 결과 : 목적 및 힌트 : string 클래스와 참조 사용 연습 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include #include using namespace std; void combine(string t1, string t2, string &t3){ t3 = t1 + " " + t2; } int main() { string text1("I love you"), text2("very much"); string text3; // 비어있는 문자열 combine(text1, text2, text3); // text1과 " ", 그리고 text2를 덧붙여 text3 만들기 cout << text3; // "I love you very much" 출력 } 설명 : ...

2020년 3월 5일 · 1 분 · Sobamemil

명품 C++ programming 실습 문제 5장 2번

문제 : 다음 main() 함수와 실행 결과를 참고하여 half() 함수를 작성하라. 1 2 3 4 5 int main() { double n = 20; half(n); // n의 반값을 구해 n을 바꾼다. cout << n; // 10이 출력된다. } 실행 결과 : 목적 및 힌트 : 참조 연습 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 #include using namespace std; half(double &num){ // 참조에 의한 호출 num /= 2; // num으로 넘어온 본래의 값이 바뀜 } int main() { double n = 20; half(n); // n의 반값을 구해 n을 바꾼다. cout << n; // 10이 출력된다. } 설명 : ...

2020년 3월 5일 · 1 분 · Sobamemil

명품 C++ programming 실습 문제 5장 1번

문제 : 두 개의 Circle 객체를 교환하는 swap() 함수를 '참조에 의한 호출'이 되도록 작성하고 호출하는 프로그램을 작성하라. 목적 및 힌트 : 참조에 의한 호출 연습 실행 결과 : 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include using namespace std; class Circle { int num; public: Circle(); Circle(int num) {this->num = num;} void setNum(int num) {this->num = num;} int getNum() {return num;} }; void swap(Circle &a, Circle &b) { int swap; swap = a.getNum(); a.setNum(b.getNum()); b.setNum(swap); } int main() { Circle a(5), b(10); cout << a.getNum() << " " << b.getNum() << endl; swap(a,b); cout << a.getNum() << " " << b.getNum(); } 설명 : ...

2020년 3월 5일 · 1 분 · Sobamemil