본문 바로가기

문제풀이/C++

[C++] 나이 계산

728x90

[목적]

주민등록번호를 입력 받은 후 나이와 성별을 출력한다.

뒷자리의 첫 번째 수가 1이면 1900년대생 남자, 2이면 1900년대생 여자, 3이면 2000년대생 남자, 4이면 2000년대생 여자이다.

 

[입력 예제 1]

780316-2376152

 

[출력 예제 1]

42 W

 

 

[입력 예제 2]

061102-3575393

 

[출력 예제 2]

14 M

[코드]

#include <iostream>
#include <string> //substr
#include <stdlib.h> //atoi

using namespace std;

int main(void) {
	
	string man;
	
	cin >> man;
	
	string cut = man.substr(0,2);
	int age = atoi(cut.c_str()); //stdlib.h
	
	cut = man.substr(7,1);
	int sex = atoi(cut.c_str());

	if(sex==2 || sex ==1) cout << 120-age;
	else cout << 20-age;

	if(sex==2 || sex == 4)
		cout << " W";
	else
		cout << " M";
	
    return 0;
}

 

[실행 결과]


[Error] 'stoi' was not declared in this scope

m.blog.naver.com/PostView.nhn?blogId=ndb796&logNo=220993371432&proxyReferer=https:%2F%2Fwww.google.com%2F

 

C++에서 stoi() 함수가 실행이 안 될 때 해결법

C++ 프로그래밍 언어를 이용해서 각종 프로그램을 작성하곤 합니다. 최근에 많이 사용되고 있는 C++11과 ...

blog.naver.com

Dev c++의 컴파일러상의 문제로 stoi를 사용할 수 없어 atoi를 사용한다.

  • int atoi (const char * str)
    헤더파일 : <stdlib.h>
    설명 : C style의 문자열을 입력받아서 int (숫자) 타입으로 변환하여 리턴한다.

  • std::string c_str()
    반환형이 char * 이므로, 해당하는 string의 첫번재 문자의 주소값(포인터)를 반환한다.

 

728x90
반응형

'문제풀이 > C++' 카테고리의 다른 글

[C++] 영어단어 복구  (0) 2020.12.27
[C++] 숫자만 추출  (0) 2020.12.27
[C++] 나이 차이  (0) 2020.12.27
[C++] 진약수의 합  (0) 2020.12.26
[C++] 자연수의 합  (0) 2020.12.26