学校の課題が分かりません・・・
Posted: 2010年7月14日(水) 07:08
↓前回のあらすじ・・・
題名の通り、学校の課題でつまってしまいました。
誰か教えてください。 お願いします。
↓問題文
基本: 構造体の配列、関数への構造体の引渡し
基本課題 13..2
name(名前: char型配列), height(身長: float型変数), bloodType(血液型: char型変数)をメンバに持つ構造体を宣言し, 128名分が記憶可能になるようその構造体の配列を定義せよ.また,その配列に対して値を入力し,さらに表示できるようにせよ.構造体のメンバ値を表示するには、ひとつの構造体の各メンバの値を表示する関数を作成すること。
% ./bodyData
1人目のデータ: いい漢 175.5 A
2人目のデータ: 竹達彩菜 169.0 B
3人目のデータ: 能登麻美子 180.4 O
4人目のデータ: 0 0 0 ← 0 0 0 と入力すると終わる.
名前 身長 血液型
いい漢 175.5 A
竹達彩菜 169.0 B
能登麻美子 180.4 O
%
ヒント: 各人の名前、身長、血液型のデータを1行で入力するためには、参考12.1に示されたfgets()関数で、これらを1度に取り込み、最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行までを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や浮動小数点数に変換し、構造体のメンバに設定すること。
ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡すことを繰り返えせばよい。
↓とりあえず考えて作ってみたもの
#include<stdio.h>
#define BUFFER_SIZE 256
#define NUMBER 128
#define NAME_SIZE 32
struct PROFILE{
char name[NAME_SIZE];
float height;
char bloodType;
}
int main(){
struct PROFILE man[NUMBE[/url];
char buf[BUFFER_SIZE];
int i, j, k, h;
for(i = 0;man.name[0] == '0' && man.height == 0 && man.bloodType == 0;i++){
printf("%d人目のデータ: ", i + 1);
fgets(buf, BUFFER_SIZE, stdin);
for(j = 0;buf[j] != ' ';j++){
man.name[j] = buf[j];
}
for(k = j+1;buf[k] != ' ';k++){
man.height = buf[k];
}
for(h = k+1;buf[h] != '\n';h++){
man.bloodType = buf[h];
}
}
printf("名前\t身長\t血液型\n");
for(j = 0;j <= i;j++){
printf("%s\t%f\t%c\n", man[j].name, man[j].height, man[j].bloodType);
}
return 0;
}
題名の通り、学校の課題でつまってしまいました。
誰か教えてください。 お願いします。
↓問題文
基本: 構造体の配列、関数への構造体の引渡し
基本課題 13..2
name(名前: char型配列), height(身長: float型変数), bloodType(血液型: char型変数)をメンバに持つ構造体を宣言し, 128名分が記憶可能になるようその構造体の配列を定義せよ.また,その配列に対して値を入力し,さらに表示できるようにせよ.構造体のメンバ値を表示するには、ひとつの構造体の各メンバの値を表示する関数を作成すること。
% ./bodyData
1人目のデータ: いい漢 175.5 A
2人目のデータ: 竹達彩菜 169.0 B
3人目のデータ: 能登麻美子 180.4 O
4人目のデータ: 0 0 0 ← 0 0 0 と入力すると終わる.
名前 身長 血液型
いい漢 175.5 A
竹達彩菜 169.0 B
能登麻美子 180.4 O
%
ヒント: 各人の名前、身長、血液型のデータを1行で入力するためには、参考12.1に示されたfgets()関数で、これらを1度に取り込み、最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行までを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や浮動小数点数に変換し、構造体のメンバに設定すること。
ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡すことを繰り返えせばよい。
↓とりあえず考えて作ってみたもの
#include<stdio.h>
#define BUFFER_SIZE 256
#define NUMBER 128
#define NAME_SIZE 32
struct PROFILE{
char name[NAME_SIZE];
float height;
char bloodType;
}
int main(){
struct PROFILE man[NUMBE[/url];
char buf[BUFFER_SIZE];
int i, j, k, h;
for(i = 0;man.name[0] == '0' && man.height == 0 && man.bloodType == 0;i++){
printf("%d人目のデータ: ", i + 1);
fgets(buf, BUFFER_SIZE, stdin);
for(j = 0;buf[j] != ' ';j++){
man.name[j] = buf[j];
}
for(k = j+1;buf[k] != ' ';k++){
man.height = buf[k];
}
for(h = k+1;buf[h] != '\n';h++){
man.bloodType = buf[h];
}
}
printf("名前\t身長\t血液型\n");
for(j = 0;j <= i;j++){
printf("%s\t%f\t%c\n", man[j].name, man[j].height, man[j].bloodType);
}
return 0;
}
