Problem:

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"가 출력됨 }

Execution Result:

Objective & Hints:

참조에 의한 호출과 참조를 리턴하는 함수 작성

Code:

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; char& find(char a[], char c, bool& success){ int len = sizeof(a); for(int i=0; i<len; i++){ if(a[i]==c) { success = true; return a[i]; } } } 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"가 출력됨 }

Explanation:

참조에 의한 호출 뿐 아니라 참조를 리턴하는 함수를 작성 하였습니다.

원하는 문자를 찾을 시 그 위치의 참조를 리턴해 참조변수 loc에 넣고 나중에 그 값을 변경 하였습니다.