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

문제 : 다음 클래스에 중복된 생성자를 디폴트 매개 변수를 가진 하나의 생성자로 작성하고 테스트 프로그램을 작성하라. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class MyVector{ int *mem; int size; public: MyVector(); MyVector(int n, int val); ~MyVector() { delete [] mem; } }; MyVector::MyVector() { mem = new int [100]; size = 100; for(int i=0; i<size; i++) mem[i] = 0; } MyVector::MyVector(int n, int val) { mem = new int [n]; size = n; for(int i=0; i<size; i++) mem[i] = val; } 실행 결과 : ...

2020년 3월 6일 · 2 분 · Sobamemil

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

문제 : 함수 big()을 호출하는 경우는 다음과 같다. 1 2 3 4 5 6 int main() { int x = big(3, 5); // 3과 5중 큰 값은 5는 최대값 100보다 작으므로, 5 리턴 int y = big(300, 60); // 300과 60 중 큰 값 300이 최대값 100보다 크므로, 100리턴 int z = big(30, 60, 50); // 30과 60 중 큰 값 60이 최대값 50보다 크므로, 50리턴 cout << x << ' ' << y << ' ' << z << endl; } (1) big() 함수를 2개 중복하여 작성하고 프로그램을 완성하라. ...

2020년 3월 5일 · 2 분 · Sobamemil

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

문제 : Person 클래스의 객체를 생성하는 main() 함수는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Person { int id; double weight; string name; public: void show() { cout << id << ' ' << weight << ' ' << name << endl; } }; int main() { Person grace, ashley(2, "Ashley"), helen(3, "Helen", 32.5); grace.show(); ashley.show(); helen.show(); } (1) 생성자를 중복 작성하고 프로그램을 완성하라. ...

2020년 3월 5일 · 2 분 · Sobamemil

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

문제 : add() 함수를 호출하는 main() 함수는 다음과 같다. 1 2 3 4 5 6 7 8 int main() { int a[] = {1,2,3,4,5}; int b[] = {6,7,8,9,10}; int c = add(a, 5); // 배열 a의 정수를 모두 더한 값 리턴 int d = add(a, 5, b); // 배열 a와 b의 정수를 모두 더한 값 리턴 cout << c << endl; // 15 출력 cout << d << endl; // 55 출력 } (1) add() 함수를 중복 작성하고 프로그램을 완성하라. ...

2020년 3월 5일 · 2 분 · Sobamemil

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

문제 : 다음은 학과를 나타내는 Dept 클래스와 이를 활용하는 main()을 보여 준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Dept { int size; // scores 배열의 크기 int* scores; // 동적 할당 받을 정수 배열의 주소 public: Dept(int size) { // 생성자 this->size = size; scores = new int[size]; } Dept(const Dept& dept); // 복사 생성자 ~Dept(); // 소멸자 int getSize() { return size; } void read(); // size 만큼 키보드에서 정수를 읽어 scores 배열에 저장 bool isOver60(int index); // index의 학생의 성적이 60보다 크면 true 리턴 }; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 int countPass(Dept dept) { // dept 학과에 60점 이상으로 통과하는 학생의 수 리턴 int count = 0; for (int i = 0; i < dept.getSize(); i++) { if (dept.isOver60(i)) count++; } return count; } int main() { Dept com(10); // 총 10명이 있는 학과 com com.read(); // 총 10명의 학생들의 성적을 키보드로부터 읽어 scores 배열에 저장 int n = countPass(com); // com 학과에 60점 이상으로 통과한 학생의 수를 리턴 cout << "60점 이상은 " << n << "명"; } (1) main()의 실행 결과가 다음과 같이 되도록 Dept 클래스에 멤버들을 모두 구현하고, 전체 프로그램을 완성하라. ...

2020년 3월 5일 · 5 분 · Sobamemil

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

문제 : 책의 이름과 가격을 저장하는 다음 Book 클래스에 대해 물음에 답하여라. 1 2 3 4 5 6 7 8 9 class Book { char *title; // 제목 문자열 int price; // 가격 public: Book(const char* title, int price); ~Book(); void set(char* title, int price); void show() { cout << title << ' ' << price << "원" << endl; } }; (1) Book 클래스의 생성자, 소멸자, set() 함수를 작성하라. set() 함수는 멤버 변수 title에 할당된 메모리가 있으면 먼저 반환한다. 그러고 나서 새로운 메모리를 할당받고 이곳에 매개 변수로 전달받은 책이름을 저장한다. ...

2020년 3월 5일 · 3 분 · Sobamemil

명품 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