C++スコーラ
ヘッダの使い方
最終更新:
cschola
-
view
構造体
ヘッダーとCPPの中にプログラムを書いていきます。
内容は前回までに作ったものを移植した(書き直した)ものにします。
ヘッダーの中身から説明します。
内容は前回までに作ったものを移植した(書き直した)ものにします。
ヘッダーの中身から説明します。
/*--------------Enemy.hの中身----------------*/ #pragma once // 敵構造体 struct tEnemy{ char name[64]; //名前 int HP; // 体力 int MP; // 魔力 };
/*-------------Enemy.cppの中身----------------*/ // cppはまだ何も書かない
/*-------------main.cppの中身--------------------*/ #include <stdio.h> #include "Enemy.h" int main(){ tEnemy enemy = {"slime",10, 2}; printf("名前:%s,HP:%d,MP:%d\n",enemy.name,enemy.HP,enemy.MP); return 0; }
ヘッダーの #pragma once はヘッダーの最初に必ず書くものです。
絶対に消さないでください。
構造体はヘッダーの中に書きます。
絶対に消さないでください。
構造体はヘッダーの中に書きます。
練習問題
第1問 Magic.h と Magic.cpp を作ってください。
第2問 char[] 名前、int 威力、int 消費MP を持つ魔法構造体を main.cpp 以外に作り、構造体変数として宣言して初期化して表示する。
第2問 char[] 名前、int 威力、int 消費MP を持つ魔法構造体を main.cpp 以外に作り、構造体変数として宣言して初期化して表示する。
関数
構造体は ヘッダーしか使いませんでしたが、関数はヘッダーと cpp を両方使います。
/*-------------------Enemy.hの中身----------------------*/ #pragma once #include <stdio.h> // 敵構造体 struct tEnemy{ char name[64]; //名前 int HP; // 体力 int MP; // 魔力 }; //【関数の宣言のみを書く】 void EnemyOutput(tEnemy enemy); // 敵の内容を表示する関数 tEnemy EnemyInput(); // 敵の内容を入力して初期化する関数
/*--------------------Enemy.cppの中身---------------------*/ #include "Enemy.h" //【関数の内容を書く】 // 敵の内容を表示する関数 void EnemyOutput(tEnemy enemy){ printf("名前:%s,HP:%d,MP:%d\n",enemy.name,enemy.HP,enemy.MP); } // 敵の内容を入力して初期化する関数 tEnemy EnemyInput(){ tEnemy g; printf("敵の名前を入力してください。\n"); scanf_s("%s",g.name, 64); printf("敵のHPを入力してください。\n"); scanf_s("%d",&g.HP); printf("敵のMPを入力してください。\n"); scanf_s("%d",&g.MP); return g; }
関数はヘッダーに 「戻り値の型」「関数の名前」「引数」だけ書き、cpp に関数の内容を書いていきます。
/*-------------------main.cppの中身----------------------*/ #include "Enemy.h" int main(){ tEnemy enemy; enemy = EnemyInput(); EnemyOutput(enemy); return 0; }
main.cpp の中身がだいぶすっきりしました。
関数や構造体を作るプログラムはなるべく、ヘッダーとcppに分けてなるべくmainはコンパクトにまとめましょう。
関数や構造体を作るプログラムはなるべく、ヘッダーとcppに分けてなるべくmainはコンパクトにまとめましょう。
列挙型
列挙型は構造体と同じようにヘッダーに書きます
/*--------------Enemy.hの中身----------------*/ #pragma once enum e{SUN, MON, TUE, WED, THU, FRI, SAT}; //列挙型 eWeek の型宣言
練習問題
第1問
新しくヘッダーとcppを作りその中に double型の変数を5つ受け取り、平均を求める関数を作る。
ユーザーに実数を5回入力してもらい、その平均を表示する。
新しくヘッダーとcppを作りその中に double型の変数を5つ受け取り、平均を求める関数を作る。
ユーザーに実数を5回入力してもらい、その平均を表示する。
第2問
社員ヘッダーを作り、識別子 JPN USA GBR GER RUS FRA を格納する列挙型の country を型宣言する。
名前、年齢、国籍コード(country型)をもつ社員構造体と社員構造体の内容を表示する関数を作り、
main.cpp で初期化して表示する。
社員ヘッダーを作り、識別子 JPN USA GBR GER RUS FRA を格納する列挙型の country を型宣言する。
名前、年齢、国籍コード(country型)をもつ社員構造体と社員構造体の内容を表示する関数を作り、
main.cpp で初期化して表示する。