C++/문제풀이

[C++] 문자열이 회문인지 알아보는 프로그램

year.number 2022. 6. 15. 12:44

 

Power C++ p.257

문자열이 회문인지 알아보는 프로그램

 

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

// p.296 16번)
// 문자열이 회문인지 알아보는 프로그램

// 1. i번째 원소와 length - 1 - i이 같은지 비교


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;
    
    bool pal = true;
    for(int i = 0; i<length/2; i++){
        //같지 않은 원소 발견? => 바로 종료, false 확정
        if (sentence[i] != sentence [length - i -1]){
            pal = false;
            break;
        }
    }
    
    if(pal == true)
        cout << "네, 회문입니다." << endl;
    else
        cout << "아니오, 회문이 아닙니다. " << endl;
    
    
    return 0;
    }

실행 결과


Key Point

1. 회문이 아닌 경우

sentence[i] != sentence [length - i -1]