-
[C++] 문자열을 입력받아서 문자열에 포함된 모든 공백 문자를 삭제하는 프로그램C++/문제풀이 2022. 6. 15. 08:16
Power C++ p.296 12번
문자열을 입력으로 받아서 문자열에 포함된 모든 공백 문자를 삭제하는 코드를 작성해보자.
#include <iostream> #include <cstring> using namespace std; // p.296 12번) 문자열을 입력으로 받아서 문자열에 포함된 모든 공백 문자를 삭제하는 코드를 작성해보자. int main(){ // 루핑을 돌며 맨 뒤에서부터 감소하다가 공백 문자를 만나면 앞으로 땡겨진다. cout << "\n\n공백 제거" << endl; char sentence[81]; cout << "문장을 입력하세요: "; // cin >> sentence; //단어 입력 OK, 문장입력 => 공백 문자 처리 불가(cin 객체) cin.getline(sentence, 81); //1. 문자열 맨 끝의 길이: 문자열의 length 구하기 int length = strlen(sentence); cout << "입력된 문자열: " << sentence << endl; //2. 문자열 맨 끝에서부터 루핑을 돌면서 공백 탐지 -> 공백 발견 시 왼쪽으로 하나씩 이동 for (int i = length; i>=0; i--){ if (sentence[i] == ' ') for(int j = i; j < length; j++) sentence[j] = sentence[j+1]; } cout << "공백이 제거된 문자열: " << sentence << endl; return 0; }
실행 결과
Key Point
1. 문자열 라이브러리 사용을 위해 #include <cstring> 추가
2.cin 객체 -> 단어 입력 OK, 문장입력 => 공백 문자 처리 불가
cin.getline(sentence, 81);으로 처리
3. 알고리즘
(1) 문자열 맨 끝의 길이 구하기 (문자열의 length 구하기)
strlen()이용
(2) 문자열 맨 끝에서부터 루핑을 돌면서 공백 탐지 -> 공백 발견 시 왼쪽으로 하나씩 이동
for (int i = length; i>=0; i--){
if (sentence[i] == ' ')
for(int j = i; j < length; j++)
sentence[j] = sentence[j+1]; // j+1번째에 있는 문자를 j번째(왼쪽으)로 이동
}
'C++ > 문제풀이' 카테고리의 다른 글
[C++] 문자열이 회문인지 알아보는 프로그램 (0) 2022.06.15 [C++] 문자열 안에 있는 영단어의 개수 계산 (0) 2022.06.15 [C++] 두 행렬의 곱 구하기(3x3) (0) 2022.06.14 [C++] 난수 발생 시킨 뒤, 숫자의 출현 빈도수 세기(이차원 배열) (0) 2022.06.14 [C++] 2차원 배열에서 최대, 최소값 구하기 (0) 2022.06.14