1. 문제

 

4. string 클래스를 이용하여 사용자가 입력한 영문 한 줄을 문자열로 입력받고 거꾸로 출력하는 프로그램을 작성하라.

 

 

2. 결과

 

 

 

3. 코드

 

#include <iostream>
#include <string>
using namespace std;

int main() {

	string s, first, last;

	cout << "아래에 한 줄을 입력하세요.(exit를 입력하면 종료합니다)" << endl;
	while(1) {
		cout << ">>";
		getline( cin, s);
		if( s == "exit" ) break;
		int len = s.size();
		for(int i=0; i< len/2; i++ ) {
			first = s.at(i);
			last = s.at(len-1-i);
			s.replace( i, 1, last );
			s.replace( len-1-i, 1, first );
		}
		cout << s << endl;
 	}
}

 

 

4. 설명

 

string 변수 s, first, last 3개를 선언 합니다.

 

getline( cin, s)로 문자열을 입력받아 s에 저장합니다.

 

그 후 s가 "exit"가 아니라면 계속 진행하고 맞다면 break;로 while문을 종료합니다.

 

int len = s.size()로 문자열 s의 길이를 구합니다.

 

 

그 후 i=0; i< len/2; i++인 for문을 이용하여서 문자열을 반전 시킵니다.

 

->len이 홀수일 경우 len/2에서 데이터 손실이 발생하지만 가운데 글자는 옮기지 않아도 되므로 문제 없습니다.

 

first변수에는 앞쪽에서 바꿀 문자를 저장하고 last는 뒤쪽에서 바꿀 문자를 저장합니다.

 

※ s.replace( i, 1, last) : "인덱스 i부터 1개의 문자를 last로 바꾼다" 입니다.

+ Recent posts