• [C++] string 문법 응용 실습 : 입력받은 문자열이 정수로만 이루어져 있는지 판단하기.

    2023. 9. 6.

    by. KAEY


    요구 사항

    ✅ 두 문자열을 입력받아서, 둘 모두 숫자(정수)인지 확인하고 정수가 아니라면 사용자에게 다시 입력받아야 합니다.

    ✅ 앞에서 입력 받은 두 숫자를 이어 붙여서 출력하기. (예> "1111", "2222" = "11112222")

    ✅ 앞에서 입력 받은 두 숫자를 더해서 출력하기. (예> "1111", "2222" = 3333)

     

     


    ✅ 두 문자열을 입력받아서, 둘 모두 숫자(정수)인지 확인하고 정수가 아니라면 사용자에게 다시 입력받아야 합니다.

            for (int i = 0; i < input1.length(); i++) {
    
                if (isdigit(input1[i]) == 0) { //숫자가 아니라면 0을 리턴하니까 0 일때,
                    input1_result = 0;
                }
                else {
                    input1_result = 2; //숫자가 맞다
                }
            }

    사용자에게 처음으로 입력받은 문자열을 input1 에 저장하였고,

    이를 원소 하나씩 확인하여 그 값이 정수인지 구분하였습니다. idigit 의 경우 그 값이 숫자가 아니라면 0을 리턴합니다. 

    미리 선언해놓은 결과 값을 구분하기 위한 '변수 input1_result' 에

    isdigit로 문자열을 판단하여 숫자가 아니라면 0 을, 숫자로만 이루어져 있다면 2 를 저장합니다.

    (굳이 0과 2가 아니여도 무관합니다.)

     

     

     

            if (input1_result == 0 && input2_result == 0) {
                cout << "\n 숫자가 아닌 값 입니다. 다시 입력해보세요. \n";
            }
            else if (input1_result == 2 && input2_result == 2) {
                cout << "\n 숫자가 맞습니다.. \n";
                break;
            }
            else {
                cout << "\n 2숫자가 아닌 값 입니다. 다시 입력해보세요. \n";
            }

    두 개의 result 값이 나올 수 있는 경우의 수는 총 4개 이지만( 00, 02, 20, 22 ), 

    문자열 두 개가 모두 정수의 형태를 가졌을 땐 두 result 가 2 의 값을 가지므로,

    두 값이 모두 2인 경우에 반복문을 종료하게 설계 하였습니다.

    (지금 확인하니 0 과 0인 경우는 불필요해 보입니다!)

     

     

     

    ✅ 앞에서 입력 받은 두 숫자를 이어 붙여서 출력하기. (예> "1111", "2222" = "11112222")

    cout << " 두 문자열을 합쳤어요. : " << input1 + input2 << endl
    cout << " 두 문자열을 합쳤어요. : " << input1.append(input2) << endl;

    두 문자열을 합치는 것은 단순히 문자열 + 문자열의 형태로 출력해도 되며,

    append 함수를 이용해서 뒤로 붙여도 됩니다.

    다만 이 경우, input1 에 input2가 옮겨지게 되어서, input1은 input1 과 input2가 합쳐진 값을,

    input2는 input2로 저장되어, 덧셈을 할 때 곤란한 상황이 생길 수 있으므로, append를 사용한다면

    변수를 따로 지정하는 등의 절차를 거쳐야만 합니다.

     

     

    위의 결과 창은 input1이 33 이고, input2 는 44 였음에도 append를 하고 나니

    input1의 값이 3344 로 변경된 것을 확인할 수 있어요.

     

     

     

    ✅ 앞에서 입력 받은 두 숫자를 더해서 출력하기. (예> "1111", "2222" = 3333)

        int a = stoi(input1);
        int b = stoi(input2);
    
        int sum = 0;
        sum = a + b;
    
        cout << " 두 문자열을 더했어요. : " << sum << endl;

    앞에서 입력받은 문자열이 정수로만 이루어졌음을 확인했으므로, stoi를 사용해도 문제가 발생하지 않습니다.

    따라서 이를 각각 int 형 변수에 저장하고 sum 변수에 더하는 형식으로 출력하도록 했습니다.

     

     

     

    출력 화면 :

    모든 내용을 출력했을 땐 위와 같이 나왔습니다.

     

     


    🎉해당 글의 내용은 "포스코 x 코딩온 스마트 팩토리 과정 수업" 에서의 수업 자료 및 실습 과제 등에서 일부 발췌되어 작성 되었습니다.


    댓글 (비로그인 댓글 허용하지 않습니다.)