1. 문제
3. string 클래스를 이용하여 사용자가 입력한 영문 한 줄을 입력받고 글자 하나만 랜덤하게 수정하여 출력하는 프로그램을 작성하라.
2. 결과
3. 코드
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
string s;
int num, dnum;
srand( (unsigned)time(0) );
string aa[26]={ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z" };
cout << "아래에 한 줄을 입력하세요.(exit를 입력하면 종료합니다)" << endl;
while( 1 ) {
cout << ">>";
getline( cin, s);
if( s == "exit" ) break;
num = rand() % s.size();
while( !isalpha( s.at(num) ) ) num = rand() % s.size();
dnum = rand() % 26;
s.replace( num, 1 , aa[dnum] );
cout << s << endl;
}
}
4. 설명
string의 저장된 멤버 함수들을 이용하여서 문제를 해결합니다.
srand( (unsigned)time(0) );을 실행하여서 실행할 때 마다 랜덤한 값을 얻을 수 있도록 합니다.
코드를 쉽게 하기 위하여 a~z까지 저장하고 있는 string 배열 aa를 만들었습니다.
num = rand() % s.size();로 문자열 s에서 무작위 인덱스 값을 num에 저장합니다.
dnum = rand() % rand()로 0~25 중 랜덤한 수를 구합니다.
그 후 입력 받은 문자열 중에서 랜덤한 위치에 있는 것이 문자가 맞다면 s.replace( num, 1, aa[num] )으로 num번째 부터 1글자를 aa[num]과 바꿉니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 4장 5번 (0) | 2019.04.06 |
---|---|
명품 C++ programming 실습문제 4장 4번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 4장 2번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 4장 1번 (0) | 2019.04.06 |
명품 C++ programming 3장 Open Challenge (0) | 2019.04.06 |