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

関数

構造体は ヘッダーしか使いませんでしたが、関数はヘッダーと 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 で初期化して表示する。
目安箱バナー