プログラミング構造体について。
include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct person{
char name[10];
int gender;
int age;
};
void printPersonList(struct person *person_p, int size);
void outputPersonList(struct person *person_p, int size);
double getAverageOfAge(struct person *person_p, int size);
int countMales(struct person *person_p, int size);
int countFemales(struct person *person_p, int size);
int main(void){
struct person *person_p;
int i, count, gender, age, maleCount, femaleCount;
char name[20];
double average;
printf("登録する人数を入力してください。\n");
scanf("%d", &count);
person_p = (struct person*)malloc(sizeof(struct person)* count);
for(i=0; i < count; i++){
printf("名前・性別(男性:0, 女性:1)・年齢をスペース区切りで入力してください。\n");
scanf("%s %d %d", name, &gender, &age);
strcpy((person_p + i) -> name, name);
(person_p + i) -> gender = gender;
(person_p + i) -> age = age;
}
printPersonList(person_p, count);
outputPersonList(person_p, count);
average = getAverageOfAge(person_p, count);
printf("平均年齢:%f\n", average);
maleCount = countMales(person_p, count);
femaleCount = countFemales(person_p, count);
printf("男性:%d名, 女性:%d名\n", maleCount, femaleCount);
free(person_p);
return 1;
}
void printPersonList(struct person *person_p, int size){
int i;
printf("登録リスト\n");
printf(" name | gender | age\n");
printf("----------+--------+-----\n");
for(i=0; i < size; i++){
printf("%10s | %1d | %2d\n",
(person_p + i) -> name, (person_p + i) -> gender, (person_p + i) -> age);
}
}
void outputPersonList(struct person *person_p, int size){
FILE *output;
int i;
if((output = fopen("meibo.c", "w")) == NULL){
printf("meibo.cを開けませんでした。\n");
return;
}
for(i=0; i < size; i++){
fprintf(output, "%s, %d, %d\n",
(person_p + i) -> name, (person_p + i) -> gender, (person_p + i) -> age);
}
fclose(output);
}
残り3つの関数をすべて定義する(それぞれ10行程度)
getAverageOfAge, countMales, countFemales
どう定義すればいいのか教えてください。お願いします。
お礼
ありがとうございます。おかげで、無事解決できました。