C++ 기초 플러스 4판 7장 함수 : 프로그래밍연습 8번
#include <iostream>
using namespace std;
const int SLEN = 30;
struct student{
char fullname[SLEN];
char hobby[SLEN];
int ooplevel;
};
int getinfo(student pa[], int n);
void display1(student st);
void display2(const student * ps);
void display3(const student pa[], int n);
int main()
{
cout << "How many student : ";
int class_size;
cin >> class_size;
while (cin.get() != '\n')
continue;
student * ptr_stu = new student[class_size];
int entered = getinfo(ptr_stu, class_size);
for (int i = 0; i < entered; i++)
{
display1(ptr_stu[i]);
display2(&ptr_stu[i]);
cout << endl;
}
display3(ptr_stu, entered);
cout << "exit\n";
delete []ptr_stu;
return 0;
}
// getinfo()는 두 개의 전달인자를 취한다. 하나는 student 구조체
// 배열의 첫 번째 원소를 지시하는 포인터이고, 다른 하나는
// 그 배열의 원소 수를 나타내는 int 값이다. 이 함수는 학생들과
// 관련된 데이터를 요구하여 배열에 저장하고, 배열이 다 찼거나
// 학생 이름에 빈 줄이 입력되면 종료된다. 이 함수는 배열의
// 실제로 채워진 원소 수를 리턴한다.
int getinfo(student pa[], int n){
for(int i = 0; i < n ; i++){
cout << i+1 << ". what's your name? : ";
cin.get(pa[i].fullname, SLEN); // 개행문자를 확인해야하므로,
// 개행문자까지 받아들이는 cin.get 사용
if( pa[i].fullname[0] == 0 ) break; // 개행문자면 그냥(빈줄) 루프종료하고,
cout << i+1 << ". what's your hobby? : ";
cin >> pa[i].hobby;
cout << i+1 << ". what's your ooplevel? : ";
cin >> pa[i].ooplevel;
cin.get(); // 다음번에 cin.get이 실행될때 정상적으로 돌기위해
}
return i;
}
// display1()은 student 구조체를 전달인자로 취하며
// 그 구조체의 내용을 출력한다
void display1(student st){
cout << "값 : name : " << st.fullname
<< " hobby : " << st.hobby
<< " ooplevel : " << st.ooplevel
<< "\n";
}
// display2()는 student 구조체의 주소를 전달인자로 취하며
// 그 구조체의 내용을 출력한다
void display2(const student * ps){
cout << "주소 : name : " << ps->fullname
<< " hobby : " << ps->hobby
<< " ooplevel : " << ps->ooplevel
<< "\n";
}
// display3()은 student 구조체 배열의 첫 번째 원소의 주소와
// 배열의 원소 수를 전달인자로 취하며, 구조체들의 내용을 출력한다
void display3(const student pa[], int n){
for(int i = 0 ; i < n ; i ++){
cout << i+1 << ". name : " << pa[i].fullname
<< " hobby : " << pa[i].hobby
<< " ooplevel : " << pa[i].ooplevel
<< "\n";
}
}
'I.T > Programming' 카테고리의 다른 글
C++ study : 함수 _ 값, 포인터, 참조 전달의 사용시기 (0) | 2011.05.17 |
---|---|
C++ study : 함수주소로써의 함수호출 (0) | 2011.05.17 |
C++ study : 함수 Revers (0) | 2011.05.17 |
C++ study : cin // cin.get() // cin.getline() 차이점.. 아 짜증 (0) | 2011.05.16 |
C++ study : cctype 관련 (0) | 2011.05.16 |