「ヘッダの使い方」の編集履歴(バックアップ)一覧に戻る

ヘッダの使い方 - (2023/05/18 (木) 19:06:15) のソース

**構造体
ヘッダーと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 以外に作り、構造体変数として宣言して初期化して表示する。

**関数
構造体は ヘッダーしか使いませんでしたが、関数はヘッダーと 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はコンパクトにまとめましょう。

**列挙型
列挙型は構造体と同じようにヘッダーに書きます
 /*--------------Enemy.hの中身----------------*/
 #pragma once
 enum e{SUN, MON, TUE, WED, THU, FRI, SAT}; //列挙型 eWeek の型宣言

**練習問題 
第1問
 新しくヘッダーとcppを作りその中に double型の変数を5つ受け取り、平均を求める関数を作る。
 ユーザーに実数を5回入力してもらい、その平均を表示する。

第2問
 社員ヘッダーを作り、識別子 JPN USA GBR GER RUS FRA を格納する列挙型の country を型宣言する。 
 名前、年齢、国籍コード(country型)をもつ社員構造体と社員構造体の内容を表示する関数を作り、
 main.cpp で初期化して表示する。
人気記事ランキング
目安箱バナー