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

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

문제 : 겜블링 게임을 만들어보자. 두 사람이 게임을 진행하며, 선수의 이름을 초기에 입력 받는다. 선수가 번갈아 자신의 차례에서 키를 치면 랜덤한 3개의 수가 생성되고 모두 동일한 수가 나오면 게임에서 이기게 된다. 숫자의 범위가 너무 크면 3개의 숫자가 일치할 가능성이 낮아 숫자의 범위를 0~2로 제한한다. 랜덤 정수 생성은 문제 5번의 힌트를 참고하라. 선수는 Player 클래스로 작성하고, 2명의 선수는 배열로 구성하라. 그리고 게임은 GamblingGame 클래스로 작성하라. 2020/03/04 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 4장 5번 ...

2020년 3월 4일 · 2 분 · Sobamemil

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

문제 : 영문자로 구성된 텍스트에 대해 각 알파벳에 해당하는 문자가 몇 개인지 출력하는 히스토그램 클래스 Histogram을 만들어보자. 대문자는 모두 소문자로 변환하여 처리한다. Histogram 클래스를 활용하는 사례와 실행 결과는 다음과 같다. 1 2 3 4 5 Histogram elvisHisto("Wise men say, only fools rush in But I can't help, "); elvisHisto.put("falling in love with you"); elvisHisto.putc('-'); elvisHisto.put("Elvis Presley"); elvisHisto.print(); 실행 결과 : 목적 및 힌트 : 클래스 만들기 종합 응용 ...

2020년 3월 4일 · 2 분 · Sobamemil

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

문제 : 다음은 이름과 반지름을 속성으로 가진 Circle 클래스와 이들을 배열로 관리하는 CircleManager 클래스이다. 1 2 3 4 5 6 7 8 class Circle{ int radius; // 원의 반지름 값 string name; // 원의 이름 public: void setCircle(string name, int radius); // 이름과 반지름 설정 double getArea(); string getName(); }; 1 2 3 4 5 6 7 8 9 class CircleManager { Circle *p; // Circle 배열에 대한 포인터 int size; // 배열의 크기 public: CircleManager(int size); // size 크기의 배열을 동적 생성. 사용자로부터 입력 완료 ~CircleManager(); void searchByName(); // 사용자로부터 원의 이름을 입력받아 면적 출력 void searchByArea(); // 사용자로부터 면적을 입력받아 면적보다 큰 원의 이름 출력 }; 키보드에서 원의 개수를 입력받고, 그 개수만큼 원의 이름과 반지름을 입력받고, 다음과 같이 실행되도록 main() 함수를 작성하라. ...

2020년 3월 4일 · 3 분 · Sobamemil

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

문제 : 다음은 커피자판기로 작동하는 프로그램을 만들기 위해 필요한 두 클래스이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class CoffeeVendingMachine { // 커피자판기를 표현하는 클래스 Container tong[3]; // tong[0]는 커피, tong[1]은 물, tong[2]는 설탕통을 나타냄 void fill(); // 3개의 통을 모두 10으로 채움 void selectEspresso(); // 에스프레소를 선택한 경우, 커피 1, 물 1 소모 void selectAmericano(); // 아메리카노를 선택한 경우, 커피 1, 물 2 소모 void selectSugarCoffee(); // 설탕커피를 선택한 경우, 커피 1, 물 2, 설탕 1 소모 void show(); // 현재 커피, 물, 설탕의 잔량 출력 public: void run(); // 커피 자판기 작동 }; class Container { // 통 하나를 나타내는 클래스 int size; // 현재 저장 량, 최대 저장량은 10 public: Container() {size = 10;} void fill(); // 최대량(10)으로 채우기 void consume(); // 1 만큼 소모하기 int getSize(); // 현재 크기 리턴 }; 다음과 같이 실행되도록 main() 함수와 CoffeeVendingMachine, Container를 완성하라. ...

2020년 3월 4일 · 3 분 · Sobamemil