• 締切済み

C言語について質問です。

C言語についての質問です。 C言語の問題で、 キーボードから氏名・身長・体重の値を受け取り、受け取った身長からもとめられる標準体重を受け取った体重から差し引いた値を計算する。 入力したデータと標準体重のデータを次のように表示するプログラムを作成せよ。 入力データ数は3件として、氏名、身長、体重、標準体重のデータは構造体に格納して、表示する際にデータの入った構造体を読み出すようにしなさい。 という問題があり、苦戦しております。 サンプルソースとして以下があり、 #include <stdio.h> #define NUMBER 3 typedef struct { char name[20]; float weight; float height; float diff; }MEMBER; int main(void){ int i; MEMBER member[NUMBER]; puts("氏名をおわすれなく"); /*構造体への入力部分*/ for(i=0;i<NUMBER;i++){ /*ここに追加*/ } /*構造体データを読み出して画面に表示する部分*/ printf("氏名\t身長[cm]\t体重[kg]\t体重-標準体重[kg]\n"); puts("--------------------------------------------------------"); for(i=0;i<NUMBER;i++){ printf("%s\t%8.1f\t%8.1f\t%8.1f\n", member[i].name,member[i].height, member[i].weight, member[i].diff); } puts("--------------------------------------------------------"); } 中央あたりの「構造体への入力部分」の書き方が分かりません。 どなたか手助けしていただけないでしょうか。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>中央あたりの「構造体への入力部分」の書き方が分かりません。 では、構造体ではなくただの変数(文字列受け取る場合は配列ですが)への入力方法は判りますか? >char name[20]; >float weight; >float height; への入力方法となりますが。 コレすら出来ない…ということでしたら、もう一度勉強し直して下さい。 あと…割とどうでもいい(というかよくあるん)ですが… >キーボードから~ は「標準入力から~」ですよね。 入門書やなんかで標準入力の説明をはしょっているのか、キーボードと書かれることがよくありますが…。

関連するQ&A

  • プログラミング言語C

    名前(char name[20]),年齢(intage),身長(double height),体重(double weight)の4つのメンバを持つ構造体であるperson型を宣言し,以下のようなプログラムを作成せよ. 1.1つの構造体変数を宣言し,それぞれのメンバの値を入力させ表示する. 2.構造体person型の配列を作成し,3人分のデータを入力して表示する. 3.BMIを求める関数double bmi(person *p) を作成し,入力した3人分のデータからそれぞれのBMIを求め表示する. BMIとはBody Mass Indexのことで肥満度を表す指数 体重をw(kg),身長をt(m)とすると,BMI = w/t2 解答お願いします。

  • C言語の構造体の配列の扱い方

    #include <stdio.h> struct record { char name[10]; float height; float weight; }; /* 各データを、長さ 5 の record 構造体の配列に代入 */ struct record records[5] = { { "yasuo", 170.5, 70.5 }, { "hideaki", 176.5, 65.8 }, { "nobu", 166.5, 58.2 }, { "yuichi", 168.0, 65.4 }, { "nori", 152.7, 68.6 } }; float std_weight(struct record r){ /* 標準体重 = (身長 - 100) * 0.9 */ return (r.height - 100.0) * 0.9; } float std_weight(struct record r); となっている時に、メイン関数にて、5人の身長をもとめる方法と適正標準体重を求める方法を教えてください。構造体の配列を一括で扱うコードがいまいちわかりません。おねがいします。

  • C言語について

    最近C言語を始めたばかりです。 誰か教えてください。 私の勉強している、明解C言語入門の演習2-6で、  以下に示すように、身長を整数値として読み込んで、標準体重を実数で表示するプログラムを作成せよ。標準体重は(身長-100)×0.9によって求め、その小数点以下は、1桁だけ表示すること。    身長を入力してください。  標準体重は67.5です。 がわかりません。  念のため、私の作ったものを参考にして答えを教えていただけないでしょうか? #include <stdio.h> int main(void) { int na; puts("身長を入力してください。"); printf("身長:"); scanf("%d",&na); printf("標準体重は[%.1f]です。%n", (double)(na - 100) * 0.9); return(0); }

  • プログラミングのC言語について質問です。

    プログラミングのC言語について質問です。 身長をS(cm)T(kg)に入力して、身体比bmiをしたの式で計算し、体型を判定して身長、体重、及び体型を出力するプログラムを作成せよ。ただし、入力データは4種類あるので{データの入力、計算、判定、出力}を繰り返し命令によって、4回繰り返すようにする。 身長比 (body mass index) : bmi = 体重÷身長の二乗×10000 <体型判定基準> bmi<19ならば「痩せ型」 bmi>24ならば「肥満型」 19≦bmi≦24ならば「標準型」 <出力形式> 身長は 173.5cm 体重は 63.5kg 身長比(bmi)はXXX.Xで、標準型の体型です。 ifを使ってやるのですが、書き方が分からないので分かる方よろしくお願いします。

  • C言語 構造体でつまずいています

    以下、番号と点数を入力して構造体配列に入力し、番号に0が入力されたら、入力処理をやめ、平均点を表示するプログラムです。  今のコードでは、最初から番号に0を入力すると、0除算になりエラーになります。どうすれば良いのでしょうか? #include <stdio.h> #define MAX 50 //配列の要素数を定義 int count=0; //グローバル変数 struct data { //構造体の定義 int num; //メンバの宣言 int ten; }; void nyuryoku(struct data *); //プロトタイプ宣言 float heikin(struct data *); //プロトタイプ宣言 void main() { struct data score[MAX]; //構造体の宣言 printf("**学生番号/点数入力**\n"); printf("\n"); nyuryoku(score); //nyuryoku関数呼び出し printf("\n**以上%d名の平均点:%0.1f点**\n",count,heikin(score)); //heikin関数の戻り値表示 } //nyuryoku関数 //機能:構造体配列にデータを入力する void nyuryoku(struct data *pd) //仮引数pdに構造体ポインタが渡る { int i; for(i=0;i<MAX;i++){ printf("学生番号>>"); scanf("%d",&pd->num); if(pd->num==0){ //学生番号に0を入力するとループを抜ける break; } printf("点  数>>"); scanf("%d",&pd->ten); count++; //人数のカウント pd++; //構造体配列を一つずらす } } //heikin関数 //機能:構造体配列の点数の平均を計算、戻り値として返す float heikin(struct data *pd) //仮引数pdに構造体ポインタが渡る { int i; int sum=0; float ave=0; for(i=0;i<MAX;i++){ if(pd->num==0){ break; } else{ sum+=pd->ten; //点数を加算 pd++; } } ave=(float)sum/count; //平均値を求める return(ave); //平均値を戻り値として返す }

  • C言語について教えてください。

    名前、身長、体重をメンバとする構造体オブジェクトを要素とする配列を宣言・定義する。 (1)名前、身長、体重を構造体オブジェクトのメンバに格納する関数 (2)平均身長を計算する関数 (3)平均体重を計算する関数 をそれぞれ定義し、その関数の機能を確認するプログラムを作成する。 構造体オブジェクトの各メンバは以下の値をもつとする。 Name Height(cm) Weight(kg) Tom 174.2 72.3 Jerry 152.3 49.2 Spike 168.6 84.8 ただし、平均身長と平均体重は呼び出し元の関数(関数main())で表示する。 また(2)(3)については、生徒の人数が変更されても処理できる関数を作成する。 [実行結果の例] 平均身長:165.0cm 平均体重: 68.0kg [ヒント] 構造体の配列でまとめられたデータから平均身長あるいは平均体重を計算する関数 <返却値型><関数名>(構造体の配列の受け渡しに対応した仮引数の宣言、生徒の人数) この問題について教えてください。 下のプログラムは自分でつかりかけたプログラムです。 #include <stdio.h> #include <string.h> struct student { char name[6]; double height; double weight; }; struct student set_student(char *n, double h, double w) { struct student ss; strcpy(&ss.name[0], n); ss.height = h; ss.weight = w; return ss; } int main(void) { struct student seito[3]; seito[0] = set_student("Tom", 174.2, 72.3); seito[1] = set_student("Jerry", 152.3, 49.2); seito[2] = set_student("Spike", 168.6, 84.8); return 0; } (2)(3)計算の計算する関数を定義し、表示させる方法がよく分かりません。具体的に教えてもらえませんか。よろしくお願いします。

  • c言語で質問なのですが

    c言語で質問なのですが 下に私の疑問点があるプログラムの一部を書き込みます。 printf("ふりがな:"); memset(p[i].huri, 0, sizeof(p[i].huri)); fgets(p[i].huri,sizeof(p[i].huri),stdin); if(strchr(p[i].huri,'\n')==NULL)//バッファ処理 { while(getchar() != '\n'); } if(p[i].huri[strlen(p[i].huri)-1]=='\n')//改行解除 { p[i].huri[strlen(p[i].huri)-1] = '\0'; } if(strlen(p[i].huri)>25) { puts("<<文字入力数が多すぎでしょうあんた>>"); puts("何かキーを押してください"); getchar(); system("cls"); continue; } ここで私は構造体配列にふりがなを登録します。 しかし25文字以上なら登録できないようにしたいのですが。 if文で制御しよう試みているのですがうまくいきません。 この場合fgetsを使った時点で格納されているのでしょうか? 結局25文字以上でも構造体配列に格納されてしまいます。 どなたか教えていただけませんでしょうか? よろしくおねがいします。

  • C言語 構造体とvectorについてです

    C言語についてこんなプログラムをつくろうとしています。内容はこんなです↓↓ 1「番号・身長・体重を入力」←番号を入力するとこで0と入力するまでループ 2「今まで入力した値の平均を出力」←身長・体重それぞれの値の平均 3「番号を入力すると対応したデータ(1で打ち込んだデータ)を出力」 4「1を入力すると出力した値の修正をする」 3と4のループをして3のところで0を入力したら終了。。。 という感じです。 わからないとこは、最初のnumberの入力でデバックエラーがおきてしまうとこ(scanf("%d",&vec[i].number);の部分がおかしい?)、2は全体的にわかりません、3と4はなんとなくわかります。 構造体とvectorを使うのがわかりやすいと思って作成中ですが完全に止まってしまいました。 できれば1と2のプログラムを作成していただけませんか?よろしくおねがいします。 int main() { float height, weight; int i, b, D, P, J, M, E, number; vector<student_list> vec; student_list num; vec.push_back(num); for(i = 0;;i++) { printf("%d人目のデータです\n番号を入力して下さい\n", i + 1); scanf("%d",&vec[i].number); if(vec[i].number == 0) { return 0; } else { printf("身長と体重を入力して下さい\n"); scanf("%f\n%f",&vec[i].height,&vec[i].weight); printf("あなたのBMIは%.1fです\n",vec[i].weight*vec[i].weight/vec[i].height); printf("電子回路の点数を入力して下さい\n"); scanf("%d",&vec[i].D); printf("プログラミングの点数を入力して下さい\n"); scanf("%d",&vec[i].P); printf("国語の点数を入力して下さい\n"); scanf("%d",&vec[i].J); printf("数学の点数を入力して下さい\n"); scanf("%d",&vec[i].M); printf("英語の点数を入力して下さい\n"); scanf("%d",&vec[i].E); printf("国数英の平均点は%dです\n",(vec[i].J+vec[i].M+vec[i].E)/3); printf("5教科の平均点は%dです\n",(vec[i].D+vec[i].P+vec[i].J+vec[i].M+vec[i].E)/5); } } }

  • C言語

    最近C言語を始めたばかりなのですが、コンパイラをしたあと、オブジェクトファイルをexeしようとすると、エラーがでます。 そのエラーとは ”問題が発生したため、error.exe を終了します。 ご不便をおかけして申し訳ありません。この問題を Microsoft に報告してください。”です。 どなたかわかる方教えてください。 以下が、問題のプログラムです。 #include <stdio.h> int main(void) { int na; puts("身長を入力してください。"); printf("身長:"); scanf("%d",&na); printf("標準体重は[%.1f]です。%n", (double)(na - 100) * 0.9); return(0); }

  • C言語 プログラミングで行詰まりました…

    標準入力(キーボード)からi,jk,nの値を入力し、次の漸化式を計算し、X_0からX_nまで求めるプログラムを作成したいのですが、うまく表示されません。どかがおかしいのかご指摘お願いします。 <漸化式> X_n=(a+b)/X_(n-1) , X_0=c(n=0) ================================================================== #include<stdio.h> float f_X(int a,int b,float c) { float y; y=(a+b)/c; return y; } int main (void) { int number,i,j; float k,l,n,X; printf("i:"); scanf("%d", &i); printf("j:"); scanf("%d", &j); printf("k:"); scanf("%f", &k); printf("n:"); scanf("%f", &n); X=k; printf("X_0= %.6f\n",X); for(number=1;number<=n;number++) { l=f_X(i,j,X); printf("X_%d= %.6f \n",number,l); X=l; } return 0; } ===================================================================