문제1.  Person 클래스를 상속 받는 Student, Professor 클래스를 작성하여 Result 값이 나오도록 프로그래밍 하여라.


결과물


소스

/*

만든이 : NoSyu

만든 날짜 : 2008-11-04


프로그램 설명

문제1.  Person 클래스를 상속 받는  Student,  Professor 클래스를 작성하여

Result 값이 나오도록 프로그래밍 하여라.

*/


#include <iostream> // iostream include


// using standard input/ouput

using std::cout;

using std::cin;

using std::endl;


// function declaration


// class declaration

class Person

{

    const char *name;

    char *phone;

    int age;


public:

    // 디폴트 생성자

    Person() {}

    // 복사생성자

    Person(char* _name, char* _phone, int _age) : name(_name)

    {

        this->phone = new char[strlen(_phone)+1];

        strcpy(this->phone, _phone);


        this->age = _age;

    }

    // 정보 출력

    void ShowData()

    {

        cout << "Name : " << this->name << "  // 이름" << endl;

        cout << "Phone : " << this->phone << "  // 전화번호" << endl;

        cout << "Age : " << this->age << "  // 나이" << endl;

    }

    // 소멸자

    ~Person()

    {

        delete []this->phone;

    }

};


class Student: public Person

{

    char* ID;            // 학번

    char* Major;        // 전공

    int grade;            // 학년


public:

    // 디폴트 생성자

    Student() {}

    // 복사생성자

    Student(char* _name, char* _phone, int _age, char* _ID, char* _Major, int _grade)

        : Person(_name, _phone, _age)

    {

        this->ID = new char[strlen(_ID)+1];

        strcpy(this->ID, _ID);


        this->Major = new char[strlen(_Major)+1];

        strcpy(this->Major, _Major);


        this->grade = _grade;

    }

    // 정보 출력

    void ShowData()

    {

        cout << "Student" << endl;

        cout << "ID : " << this->ID << "  // 학번" << endl;

        cout << "Major : " << this->Major << "  // 전공" << endl;

        cout << "Grade : " << this->grade << "  // 학년" << endl;

        Person::ShowData();        // Person 클래스에 있는 함수 호출

        cout << "======================" << endl;

    }

    // 소멸자

    ~Student()

    {

        delete []this->ID;

        delete []this->Major;

    }

};


class Professor: public Person

{

    char* ID;            // 교수번호

    char* Major;        // 전공


public:

    // 디폴트 생성자

    Professor() {}

    // 복사생성자

    Professor(char* _name, char* _phone, int _age, char* _ID, char* _Major)

        : Person(_name, _phone, _age)

    {

        this->ID = new char[strlen(_ID)+1];

        strcpy(this->ID, _ID);


        this->Major = new char[strlen(_Major)+1];

        strcpy(this->Major, _Major);

    }

    // 정보 출력

    void ShowData()

    {

        cout << "Professor" << endl;

        cout << "ID : " << this->ID << "  // 교수번호" << endl;

        cout << "Major : " << this->Major << "  // 전공" << endl;

        Person::ShowData();        // Person 클래스에 있는 함수 호출

        cout << "======================" << endl;

    }

    // 소멸자

    ~Professor()

    {

        delete []this->ID;

        delete []this->Major;

    }

};


// main function

int main(void)

{

    Student stu("hiya", "031-290-7221", 20, "2007710512", "Computer", 4);

    // 이름, 전화번호, 나이, 학번, 학년, 전공

    stu.ShowData();

   


    Professor prof("hiya2", "031-290-7220", 53, "12345", "Computer");

    // 이름, 전화번호, 나이, 교수번호, 전공

    prof.ShowData();


    return 0; // 종료

}



문제2. Result 값이 나오도록 프로그래밍 하여라.

조건 1. Vehicle클래스는 Company클래스를 상속

조건 2. Airplane클래스는 Vechicle클래스를 상속

조건 3. Booking시 각 승객의 baggage 무게는 최대 20kg이다. 20kg 이상일 때, “Over  Baggage weight”를 나태나고 다시 승객 수와 baggage 무게를 입력 받도록 하여라.  (Result 참조) e.g., 승객이  2명 일 때, 최대 허용 가능한 무개는  20*2  =  40kg.


결과물


소스

/*

만든이 : NoSyu

만든 날짜 : 2008-11-04


프로그램 설명

문제2. Result 값이 나오도록 프로그래밍 하여라.

조건  1. Vehicle클래스는 Company클래스를 상속

조건  2. Airplane클래스는 Vechicle클래스를 상속

조건  3.  Booking시 각 승객의  baggage 무게는 최대  20kg이다.  20kg 이상일 때,

“Over  Baggage  weight”를  나태나고  다시  승객  수와  baggage  무게를

입력 받도록 하여라.  (Result 참조)

e.g., 승객이  2명 일 때, 최대 허용 가능한 무개는  20*2  =  40kg.

*/


#include <iostream> // iostream include


// using standard input/ouput

using std::cout;

using std::cin;

using std::endl;


// class declaration

class Company

{

public:

    char *comName;  // 회사이름

    int comID;  // 회사 ID

    // 디폴트 생성자

    Company() {}

    // 복사 생성자

    Company(char* _comName, int _comID)

    {

        this->comName = new char[strlen(_comName)+1];

        strcpy(this->comName, _comName);


        this->comID = _comID;

    }

    // 소멸자

    ~Company()

    {

        delete []this->comName;

    }

    // 정보 출력 함수

    void ShowData()

    {

        cout << "Company Name : " << this->comName << "  // 회사이름" << endl;

        cout << "Company ID : " << this->comID << "  // 회사 ID" << endl;

    }

};

class Vehicle : public Company

{

public:

    int passenger;  // 총 승객 수

    int baggage;  // 총 가방 무개

    void Booking();

    // 디폴트 생성자

    Vehicle() {}

    // 복사 생성자

    Vehicle(char* _comName, int _comID, int _passenger, int _baggage)

        : Company(_comName, _comID)

    {

        this->passenger = _passenger;

        this->baggage = _baggage;

    }

    // 정보 출력 함수

    void ShowData()

    {

        cout << "Person Num : " << this->passenger << "  // 총 승객 수" << endl;

        cout << "Weight of Baggage : " << this->baggage << "  // 총 짐 무게" << endl;

    }

};

class Airplane : public Vehicle

{

private:

int air_id;  // 비행기  ID

int crew_num;  // 비행기 승무원수

public:

    // 디폴트 생성자

    Airplane() {}

    // 복사생성자

    Airplane(char* _comName, int _comID, int _passenger, int _baggage, int _air_id, int _crew_num)

        : Vehicle(_comName, _comID, _passenger, _baggage)

    {

        this->air_id = _air_id;

        this->crew_num = _crew_num;

    }

    // 정보 출력 함수

    void ShowData()

    {

        cout << "Info. of Airplane ==============" << endl;

        Company::ShowData();                        // Company 클래스에 있는 함수 호출

        Vehicle::ShowData();                        // Vehicle 클래스에 있는 함수 호출

        cout << "Air ID : " << this->air_id << "  // 비행기 ID" << endl;

        cout << "Crew Num : " << this->crew_num << "  // 비행기 승무원 수" << endl;

        cout << "===========================" << endl << endl;

    }

};


// function declaration

// Vehicle 클래스 안의 Booking 함수 정의

// 승객 수와 짐 무게를 입력받아 조건을 확인한 후 클래스에 정보 갱신

void Vehicle::Booking()

{

    int pass_num = 0;                        // 입력 받는 승객 수

    int weight_cnt = 0;                        // 입력 받는 짐 무게


    cout << "Booking Airplane ==========" << endl;


    while(1)

    {

        // 승객 수 입력받기

        cout << "Insert Num. Of Passenger = : ";

        cin >> pass_num;


        // 짐 무게 입력받기

        cout << "insert weight = ";

        cin >> weight_cnt;


        // 승객당 무게는 20kg

        // 만약 받은 짐 무게가 이보다 작거나 같다면 while문 빠져나오기

        // 그렇지 않다면 에러 메시지를 띄운 후 다시 입력받기

        if(weight_cnt <= pass_num * 20)

        {

            break;

        }

        else

        {

            cout << "Over Baggage weigh" << endl;    // 에러 메시지

            cin.ignore();                            // 입력 스트림 버퍼 비우기

        }

    } // while(1) 끝


    // 클래스에 정보 추가

    this->passenger += pass_num;

    this->baggage += weight_cnt;


    // 끝을 알리는 메시지 출력

    cout << "Booking complete =============" << endl << endl;

}


// main function

int main(void)

{

    Airplane air("HiYa", 1234, 0, 0, 5678, 10);

    // 회사이름, 회사ID, 총 승객 수, 총 짐 무개, 비행기  ID, 비행기 승무원수

    air.ShowData();


    air.Booking();

    air.ShowData();


    return 0; // 종료

}


크리에이티브 커먼즈 라이선스
Creative Commons License

글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.

트랙백 주소 :: http://nosyu.pe.kr/trackback/1740

댓글을 달아 주세요

[로그인][오픈아이디란?]