[C++ 언어-기초실습-16] 정수를 입력받아 각 자리 수을 더한 값을 구하라?

in #kr-dev5 years ago (edited)

[C++ 언어-기초실습-16] 정수를 입력받아 각 자리 수을 더한 값을 구하라?



오늘은 어떤 실습 문제를 만들까 하다가 정수 하나를 입력 받아서 정수에 있는 각 자리 숫자들을 더한 값을 구해보는 실습을 해보는 것이 좋을 것 같아서 오늘의 주제로 결정했네요. 그럼 시작해 볼까요.

1. 정수 입력과 자릿수 구하기


int a=123;

가령 정수가 123이란 수가 있다면 '1', '2', '3'이라는 각 자릿 수를 어떻게 구할까요. 가장 간단한 방법은 '%'연산자를 이용하여 10으로 나눈 나머지 값으로 자릿수를 구하면 됩니다. 10으로 나눈 나머지면 '3'이라는 숫자를 구할 수 있게 됩니다. 그러면 '2'라는 숫자를 구하기 위해서는 또 고민하게 됩니다. '/'연산자를 이용하여 10으로 나눈 몫을 하면 일의 자리를 절삭할 수 있습니다.

설명이 좀 이해가 안갈 수 있는데 식으로 설명하면 다음과 같습니다.

int a=123;

1번째 :
a % 10 = 123%10 => 3
a = a / 10 => 123 / 10 => 12

2번째 : 
a % 10 = 12%10 => 2
a = a / 10 => 12 / 10 => 1

어떤 느낌으로 전개 되는지 아시겠지요.

이제 코딩을 통해 실제 하나의 정수를 입력 받아 각 자리수를 더한 값을 출력 해 보도록 하겠습니다.

2. 코딩


[전체소스]

#include <iostream>


using namespace std;

int main(int argc, char** argv) {
    
    int a;
    int b;
    int sum=0;
    
    cout<<"정수 하나를 입력하시오? "; 
    cin>>a;
    
    cout<<"자릿수 총합 : ";
    do{
        b=a%10;
        sum=sum+b;      
        cout<<b;        
        a=a/10;
        if(a!=0) cout<<"+";
    }while(a!=0);
    
    cout<<"="<<sum<<endl;
    
    return 0;
}

[결과]
a1.jpg

마무리


오늘의 핵심은 각 자리숫자를 쪼갤 수 있느냐의 능력입니다. 문자열의 경우는 배열 변수로 각 위치(index)로 각 자릿수를 쉽게 쪼갤 수 있습니다. 참고로 위 정수입력이 아닌 숫자여도 문자열로 입력 받아서 각 위치 값을 불러와서 문자를 숫자로 변환하는 함수를 이용하면 간단히 해결 할 수도 있습니다. 이부분은 한번 직접 만들어 보세요. 여기에서는 숫자의 개념과 숫자를 어떻게 분해해 낼 수 있는지의 능력을 테스트 하기 위한 실습입니다.


Sponsored ( Powered by dclick )

dclick-imagead

Sort:  

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.