Skip to content

Latest commit

 

History

History
231 lines (173 loc) · 4.42 KB

11.struct.md

File metadata and controls

231 lines (173 loc) · 4.42 KB

구조체

서로 관련있는 변수들을 모아서 하나의 새로운 타입을 만들어주는 기능입니다.

이번 주제는 학생에 대하여 실습해봅니다.

enum과 비슷한 struct

student라는 이름을 구조체로 합칩니다.

#include<iostream>

using namespace std;
#define size 64
struct student
{
    char name[size];
    int num;
    int kor;
    int eng;
    int math;
};

이와 같은 경우는 이름,학번,한국어,영어,수학이 같이 들어있습니다.

초기화

#include<iostream>

using namespace std;
#define size 64
struct student
{
    char name[size];
    int num;
    int kor;
    int eng;
    int math;
};

int main() {
    student korean_student = {};

    return 0;
}

배열과 같이 korean_student를 {}로 초기화합니다.

값 대입하기

온점을 이용해서 korean_student안 포함되있는 항목들에 대입해줍니다.

#include<iostream>

using namespace std;
#define size 64
struct student
{
    char name[size];
    int num;
    int kor;
    int eng;
    int math;
};

int main() {
    student korean_student = {};

    korean_student.num = 20171600;
    korean_student.kor = 100;
    korean_student.eng = 100;
    korean_student.math = 50;

    return 0;
}

다만, 문자열은 바로 대입할 수 없습니다.

문자열 복사 및 붙혀넣기

#include<iostream>

using namespace std;
#define size 64
struct student
{
    char name[size];
    int num;
    int kor;
    int eng;
    int math;
};

int main() {
    student korean_student = {};

    strcpy_s(korean_student.name, "minsoo");
    strcat_s(korean_student.name, " kim");
    korean_student.num = 20171600;
    korean_student.kor = 100;
    korean_student.eng = 100;
    korean_student.math = 50;

    return 0;
}

문자열은 strcpy_sstrcat_s를 이용하여 복사와 붙혀넣기를 합니다.

문자열 비교

#include<iostream>

using namespace std;
#define size 64
struct student
{
    char name[size];
    int num;
    int kor;
    int eng;
    int math;
};

int main() {
    student korean_student = {};

    strcpy_s(korean_student.name, "minsoo");
    strcat_s(korean_student.name, " kim");
    korean_student.num = 20171600;
    korean_student.kor = 100;
    korean_student.eng = 100;
    korean_student.math = 50;


    if (strcmp(korean_student.name, "minsoo kim") == 0) {
        cout << "학생을 찾았습니다 :  " << korean_student.name << endl;
    }


    cout << "name : " << korean_student.name << endl;
    cout << "number : " << korean_student.num<< endl;
    cout << "korean : " << korean_student.kor << endl;
    cout << "english : " << korean_student.eng << endl;
    cout << "math : " << korean_student.math << endl;


    return 0;
}

문자열을 비교할때는 strcmp를 이용합니다.

같으면 0을 반환합니다.

구조체 타입 출력

cout << "name : " << korean_student.name << endl;
cout << "number : " << korean_student.num<< endl;
cout << "korean : " << korean_student.kor << endl;
cout << "english : " << korean_student.eng << endl;
cout << "math : " << korean_student.math << endl;

기존 출력 방법이랑 동일합니다.

완성 코드

#include<iostream>

using namespace std;
#define size 64
struct student
{
    char name[size];
    int num;
    int kor;
    int eng;
    int math;
};

int main() {
    student korean_student = {};

    strcpy_s(korean_student.name, "minsoo");
    strcat_s(korean_student.name, " kim");
    korean_student.num = 20171600;
    korean_student.kor = 100;
    korean_student.eng = 100;
    korean_student.math = 50;

    if (strcmp(korean_student.name, "minsoo kim") == 0) {
        cout << "학생을 찾았습니다 :  " << korean_student.name << endl;
    }


    cout << "name : " << korean_student.name << endl;
    cout << "number : " << korean_student.num<< endl;
    cout << "korean : " << korean_student.kor << endl;
    cout << "english : " << korean_student.eng << endl;
    cout << "math : " << korean_student.math << endl;


    return 0;
}

과제

  • 과제-1 : 구조체 형식으로 특정 물건의 정보를 출력하는 프로그램 제작하기

출력 형식 :

enter your country : //입력 받기(ko, en)
name : good-laptop
// 만약 판매처가 한국이면, 물건 이름뒤에 "-ko"붙이기
// 만약 판매처가 미국이면, 물건 이름뒤에 "-en"붙이기
price : 700000
os :  // os pre-install = en, os none = ko