/* a10-4-3.c */
#include <stdio.h>
#define N 5

typedef struct {     /* 給与       */
	int	basic;         /* 基本給   */
	int house;         /* 住宅手当 */
	int family;        /* 家族手当 */
	int qualification; /* 資格手当 */
} Pay;
typedef struct  {    /* 社員情報 */
	int no;            /* 社員番号 */
	char name[20];     /* 氏名     */
	char post[20]; 	   /* 役職     */
	int years;         /* 勤続年数 */
	Pay pay;           /* 給与     */
} Syain_dt;

Syain_dt search_syain(const Syain_dt *p, int sno, int n);

int main(void)
{
	Syain_dt g[N] = {
		{127, "滝沢康明",   "課長", 21, 366780, 10000, 15000, 12000},
		{204, "加藤ゆい",   "主任", 15, 283640, 10000, 0,     6000},
		{255, "小池一平",   "",     12, 264200, 0,     0,     0},
		{272, "矢田佐希子", "",     10, 228760, 0,     0,     6000},
		{304, "堂本猛",     "",     5,  217700, 0,     10000, 12000},
	};
	Syain_dt search;
	int sno;

	printf("探索する社員番号を入力してください。＞ ");
	scanf("%d", &sno);

	search = search_syain(g, sno, N);

	if (search.no != 0) {
		printf("番号 氏名　　　　 役職　 勤続 基本給 住宅　家族　資格\n");
		printf("%4d %-12s %-6s %4d %6d %5d %5d %5d\n", search.no, search.name, 
				search.post, search.years, search.pay.basic, 
				search.pay.house, search.pay.family, search.pay.qualification);
	}
	else {
			printf("該当する番号はありません。\n");
	}

	return 0;
}

/*** 社員情報を探索する ***/
/* （仮引数）s：探索する構造体へのポインタ　sno：探索社員番号　n：構造体の件数
　 （返却値）探索した社員情報（データのない場合には社員番号に0を設定） */
Syain_dt search_syain(const Syain_dt *p, int sno, int n)
{
	Syain_dt s;
	int i;

	for (i = 0; i < n; i++) {
		if (sno == p->no) {
			s = *p;
			break;
		}
		p++;
	}
	if (i == n) {
			s.no = 0;
	}

	return s;
}
