0415構造体

3680 ワード

#include
#include
using namespace std;
//ここで構造体を定義する
struct score
{
int kor;
int eng;
int math;
};
struct student
{
string name;//クラスは書き込むこともできます.
int age;//基本資料型も使えます.
string homeTown;
int pride;
int monthlyScore[12];//平らに置くこともできます.
struct score myScore;//先に定義した構造体を加えることもできます.
}seoyeon,jaehyuk;//カッコの末尾とセミコロンの間で、学生の変数を事前に宣言することもできます.
//name; age; korScore; rank;サブ変数
int main()/これは私たちが今使っている唯一の関数です.
{
/*
* 프로그래밍 기초 (메모리, cpu, 디스크)
getch()
こうぞうたい
1.プログラムの
2.構造的
3.オブジェクト向け

抽象化


c言語で抽象コードに使用される三剣客:配列構造体関数
抽象画??簡略化
なぜコードが抽象化される必要があるのか:最終コードは人が作成したものです.
コードの解釈を容易にするには
他の人が引き継いでメンテナンスしやすい必要があります.
他の人とコードを作成し、
タイル:複数の属性が同じデータを同じ名前と順序で指定した連続番号に関連付けることで抽象化
構造体:実際に使用したデータ(データ型別)を組み合わせて抽象化する
関数:プロシージャ(コード)を特定の機能単位として抽象化する
最悪の抽象化->抽象レベルを向上させるプロセス
構造体とは?

  • 変数セット

  • ある変数がある種の概念に分類できる場合

  • studentName[10], studentAge[10], studentScore[10] ...

  • 「学生」の「XXX」

  • 名前、年齢、国語の点数、順位などを「学生」という構造体で組み合わせて使う.
    ≪構造体の場所の定義|Define Structure Location|oem_src≫:構造体で使用される関数の前に定義します.
    (関数の前(上)

  • 構造体定義の方法
    構造体変数名
    {
    構造内のサブ変数.
    △上記の例によれば、名前、年齢、国語の点数、順位などはサブ変数である.
    };
    構造体は、新しく作成したデータ型です.
    構造体に入ることができるサブ変数はどれらがありますか?
    もちろん、int/bool/floatなどのすべての基本データ型が使用できます.
    string<-クラスも書けます.

  • 構造体の宣言と初期化
    基本的に,構造体変数の概念はアレイ変数の概念と同じである.
    int a[3] = (50,60,70);
    構造体変数は、以下のように同時に宣言することもできます.
    player.hp = player.hp - monster[n].dmg;
    <-注釈なしでコードを学習していない人にも一定の可読性がある.
  • */
    student minseop;//構造変数の宣言
    minseop.name=「シン・ミンソプ」;//minseop.名前
    minseop.age = 34;
    minseop.ホームタウン=「仁川」.
    minseop.pride = 100;
    cout << minseop.name << endl;
    //超簡単練習:student構造で自分の情報を入力して確認します.
    student minwoo;
    minwoo.age = 26;
    minwoo.homeTown = "seoul";
    minwoo.pride = 100;
    minwoo.name="李ミンウ";
    minwoo.myScore.eng = 99;
    minwoo.monthlyScore[0] = 89;
    minwoo.monthlyScore[1] = 95;
    score myScore = { 50, 80, 90 };//初期化配列のように、構造体変数も初期化できます.
    //monster a={"ゴブリン",70,55,12 f,true,100};
    cout << myScore.kor << myScore.eng << myScore.math << endl;
    cout << minwoo.age << endl;
    課題:迷宮脱出ゲームの更新
    使用可能なすべての要素に構造を適用して、ソースコードを改善します.
    tile:地形情報(森林、沼、平地)を入れる
    プレイヤー:疲労度を加える
    プレイヤーはどの地形で、プレイヤーの疲労度はどのくらいですか(森-1、沼-3、平地0)
    表示するために修正してみましょう.
    /
    //string a, b, c; //最悪の抽象
    // string a[3];//上よりいい
    // string name1, name2, name3;//あるいはこのような方法で.
    // string studentName[3];//意図は上よりも明確なので、良い抽象です.
        1. 두 정수를 입력받은 후 두 정수의 사칙연산 + 나머지(%) 결과를 출력하기
    
        2. 최소값과 최대값을 입력받은 후 두 수 사이의 랜덤한 숫자 1개 출력하기
    
        3. 1~3사이의 숫자를 입력받은 후 입력받은 숫자에 따라 다른 인삿말이 나오도록 하기
        (출력 예시 : 숫자를 입력하시오(1~3) : 3
            좋은 하루입니다.)
    
        4. 1부터 100까지의 숫자를 차례대로 출력하기
        출력되는 숫자의 옆에 홀수이면 홀수, 짝수이면 짝수라고 표시하기
        출력되는 숫자의 옆에 3의 배수이면 3의 배수라고, 5의 배수는 5의 배수라고 표시하기
        (출력 예시
            1 홀수
            2 짝수
            3 홀수 3의 배수
            4 짝수
            5 홀수 5의 배수
            6 짝수
            .
            .
            .
            100 짝수 5의 배수)
        ​
        5. 1~100 사이의 임의의 숫자를 맞추는 게임
        오답을 입력하면 컴퓨터가 정답이 오답보다 큰지 작은지 알려주고
        다섯 번 안에 못맞추면 게임 오버
        ​
        6. 숫자 대신 알파벳 중 하나를 입력받고 컴퓨터가 생각하는 알파벳과 같은 값을 찾는
        게임 만들기.기본 규칙은 5번과 비슷
        (틀렸을 때 입력한 문자보다 앞에 있는지, 뒤에 있는지 알려주고 5번까지 기회를 준다)
        ​
        7. 몬스터라는 구조체를 만들고 5개를 선언하시오. 5개의 이름은 cin으로 입력받게 하고
        몬스터의 공격력, 방어력은 랜덤으로 설정되도록 하시오.
        그 후 1~5 사이의 숫자를 입력하면 번호에 해당하는 몬스터의 이름, 공격력, 방어력을
        출력하시오.
    }