//객체지향 금123 2012.04.20
//3번 200911636박정욱
#include<iostream>
#include<iomanip>
using namespace std;
void cin_data(int table[][6]); //data를 입력받고, 입력받은 data를 age_check함수로 넘김.
void age_check(int age, int code, int table[][6]); //age를 검사해 나이를 구분하고, table[나이그룹][code]를 증가시킴.
void population(int table[][6]); //table배열을 표로 정리해서 출력한다.
int main()
{ int table[5][6]={0}; //table[나이][지역코드] ; [나이]->0:(0~20)/1:(20~40)/3:(40~60)/4:(60~80)/5:(80이상)
cin_data(table); //table배열에 data를 입력시키는 함수 호출.
population(table); //입력받았던 table배열을 표로 출력시키는 함수 호출.
return 0;
}
void cin_data(int table[][6]) //data를 입력받아 check함수로 전달해주는 함수.
{ int i,age, code; //i:for문을 사용하기 위한 변수, age:입력받을 나이, code: 입력받을 지역코드
cout << "나이/ 지역코드를 입력하세요.(코드: 1~6)\n50번 입력." << endl;
for(i=0 ; i<50 ;i++) //for문 사용 50번 입력.
{ cin >> age >> code; // 나이, 지역코드 입력
if(age >=0 && code >=1 && code <=6) //나이가 0이상이고, 지역코드가 1~6일경우 age_check함수를 호출.
{ age_check(age, code-1, table); }
else //경고문 출력후 i를 감소시켜 이전 항 다시 입력.
{ cout << "error:나이와 지역코드를 확인하시오.\n"; i--;}
}
};
void age_check(int age, int code, int table[][6]) //나이를 그룹별로 나누어 table배열에 입력시켜주는 함수.
{ switch(age/20) //나이를 20으로 나누어 그룹을 판별한다.
{ case 0 : {table[0][code]++;}break; //age÷20 = 0 : 0이상~20미만
case 1 : {table[1][code]++;}break; //age÷20 = 1 : 20이상~40미만
case 2 : {table[2][code]++;}break; //age÷20 = 2 : 40이상~60미만
case 3 : {table[3][code]++;}break; //age÷20 = 3 : 60이상~80미만
default : {table[4][code]++;} break; //그외 : 80이상.
}
};
void population(int table[][6]) //table을 표로 출력시켜주는 함수
{ int i,j; //for문을 사용하기위한 변수 i,j
cout << "age\code "; //좌측 상단에 표시
for(j=1 ; j <7 ; j++) //상단에 표시; 지역 코드값
{ cout << " "<<j<<" "; }
cout << endl; //지역코드 1~6출력후 줄바꿈
for(i=0 ; i <5 ; i++) //좌측에 나이 그룹 표시
{ if(i != 4){cout << i*20 << "이상~"<< (i+1)*20<<"미만 ";} //(i+1)X(0~20)의 나이 좌측에 출력
else{cout << (i)*20 << "이상~ ";} //80세 이상일경우
for(j=0 ; j <6 ; j++) //나이 그룹 출력후, table[i][j]를 출력.(j->i순 2중for문)
{ cout <<" "<< table[i][j]<<" "; }
cout << endl; //table[i]그룹의 지역코드를 출력후, 줄바꿈
}
};