• 締切済み

構造体を使ったプログラミング

自分でやったのですが、どうしてもエラーがでてしまいます。どなたか例をあげていただけませんか。お願いします。 次のデータをseiseki.txtというファイルに格納し、構造体を用いて、縦横(各被験者ごと、科目ごと)を集計し、終点、平均点、最高点を求めよ。  氏名  英語 数学 国語 理科 社会 ーーーーーーーーーーーーーーーーーーーー  あ   70 56 66 45 88  い   66 85 68 55 73  う   55 65 53 67 55  え   85 72 76 58 62  お   92 70 45 73 55  か   56 57 52 62 82  き   72 62 33 85 95  く   46 95 48 72 34  け   83 42 88 92 56  こ   68 65 91 82 66

みんなの回答

  • dra2jp
  • ベストアンサー率25% (18/72)
回答No.4

とりあえずどこまで自分でプログラム書いたのでしょう。 自分が考えたところまで書いてください。 例を挙げてくださいということですが そうでないと私達は1から10まで書いてしまう事になります。

  • Qwerty-36
  • ベストアンサー率25% (58/226)
回答No.3

まず、ポイントは、どういうものを「一つの固まり」として扱うかです。 構造体にした変数と、その構成メンバーを書いてご覧。 そして、それぞれに対して、どういう処理をするか、落ち着いて考えること。 このまま補足要求にも答えない場合、課題丸投げとして質問は削除されます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

エラーのでるプログラムを補足して下さい。 全角テキストで点数が書いてあるからかな?

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

>自分でやったのですが、どうしてもエラーがでてしまいます。 エラーの出ているプログラムソースを全部載せて質問して下さい。 じゃないと何が悪くてエラーになるのか回答出来ません。 >どなたか例をあげていただけませんか。 では、このサイトで禁止されている「課題と思われる物の丸投げ」スレスレの投稿です。

関連するQ&A

  • プログラミングの構造体の課題が出たんですが・・・

    プログラミングの構造体の課題が出たんですがさっぱりわかりません。どなたかわかる方お願いします。 次の仕様に従って、生徒の科目得点から平均点と評価を求め、評価結果の画面を表示するプログラムを作成しなさい。 与えられた仕様 手順 1. プログラムに読み込むデータファイル名は、コマンドラインで入力する。 2. データファイルには、以下のような形式で1行目に学生数、2行目に項目名(学生番号、国語、数学、理科、英語)が、3行目以降に学生番号と各科目点数が格納されている。 5 学生番号 国語 数学 理科 英語 1001 85 74 63 90 1002 78 65 70 62 1003 89 92 88 76 1004 32 48 66 15 1005 92 76 81 98 3.下記の 構造体を用いてデータの格納を行い、平均点と評価も格納できるようにすること。 struct seiseki { /* 成績データ */ int no; /* 学生番号 */ int ten[4]; /* 点数 */ double avg; /* 平均点 */ char hyouka; /* 評価 */ }; 4. 処理手順は、次のとおりとする。 1. ファイルからデータを読み込むこと。 2. 各人の 4科目の平均点を求め、構造体に格納すること。 3. 各人の評価を求め、構造体に格納すること。尚、4段階の評価基準は上記のとおり。 平均点 評価 80点以上 'A' 70点以上 80点未満 'B' 60点以上 70点未満 'C' 60点未満 'D' データファイルは空白で区切られています。 こうすれば解けるよ、とかこのサイト見てやればできるよ等の 回答ではなく、この問題の答えを教えてくれたらうれしいです。 自分で理解してやらないと~とか考えてやらないと~等の回答もしないでください。 わがまま言ってすいませんが、わかる方お願いします。

  • プログラミング 難問

    問3:下記のように名前と3 科目の成績が記載されているファイル(seiseki.txt)からデータを 読み出し、各人の平均点および科目毎の平均点を表示するプログラム(prog17.c)を作 成しなさい。 (seiseki.txt というファイルはエディタ(emacs)などで事前に作っておくこと) seiseki.txt の内容 (名前は左づめで最大5 文字まで、点数は右づめ) John 100 90 70 Mary 80 55 60 James 40 70 64 解いて下さいませんか!難関大の一年の課題です!

  • 構造体の構造体 引数

    構造体の中の構造体の関数の引き渡し方法がわかりません。 下記ソースで試したのですが、うまくいきませんでした。 助言お願いいたします。 //repo.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #define NUM 20 #define MAX 15 struct seiseki{ float shu[3]; }; struct seito{ char name[NUM]; int age; struct seiseki kekka; }; void input(struct seito *p); void s_input(struct seiseki *p); void ss_input(struct seiseki *data); int main(){ int i; struct seito data[2]; for(i=0;i<2;i++){ printf("------------------------------\n"); printf("%d人目",i+1); input(&data[i]); } printf("%f\n",data[0].kekka.shu[0]); printf("%f\n",data[0].kekka.shu[1]); printf("%f\n",data[0].kekka.shu[2]); //data[1]に格納できない。 printf("%f\n",data[1].kekka.shu[0]); printf("%f\n",data[1].kekka.shu[1]); printf("%f\n",data[1].kekka.shu[2]); return 0; } void input(struct seito *p){ printf("名前->"); scanf("%s",p->name); printf("年齢->"); scanf("%d",p->age); s_input(&(p->kekka)); } void s_input(struct seiseki *data){ printf("国語->"); ss_input(data); printf("算数->"); ss_input(data); printf("英語->"); ss_input(data); } //下記関数で成績をchar型で受け取り、数値化したい。 void ss_input(struct seiseki *data){ char p[100]; int i=0; static int o=0; scanf("%s",p); while( p[i] != '\0'){ if(isdigit(p[i])==0){ printf("再入力してください"); scanf("%s",p); } i++; } data->shu[o]=atof(p); printf("%f\n",data->shu[o]); o++; }

  • 構造体から平均点を求める方法

    構造体が(名前、数学の点数、英語の点数、理科の点数)という形で、100人分のデータがあった場合。 この構造体を関数で受け取り、各科目の平均点をパラメタで返し、全体の平均を復帰値にするにはどのような関数にすれば良いのでしょうか。参考のソースを示していただけると助かります。よろしくお願いします。

  • C++でfscanf関数・fprintf関数を利用した成績処理のプログ

    C++でfscanf関数・fprintf関数を利用した成績処理のプログラムを作成しています。 #include "stdafx.h" void input(void); void calc(void); void edit(void); int gakusei=10,kamoku=5; /*学生数、科目数*/ char kamokumei[5][40]; /*科目名*/ char shimei[10][40]; /*氏名*/ int tennsuu[10][5]; /*点数*/ float heikin[10]; /*平均点*/ void main() /*メイン関数*/ { input(); calc (); edit (); } void input(void) /*データ入力(infile.d.txtから読み込む)*/ { FILE *fp; int n,k; fp=fopen("infile.d.txt","r"); if(fp==NULL) { printf("infile.d.txtが開けません\n"); } printf("infile.d.txt\n\n"); fscanf(fp,"%d %d",&gakusei,&kamoku); printf("%d %d\n",gakusei,kamoku); fscanf(fp,"%s",kamokumei); printf("%s\n",kamokumei); fscanf(fp,"%s",shimei); printf("%s\n",shimei); while(fscanf(fp,"%s",tennsuu)!=EOF) { printf("%s\n",tennsuu); } printf("\n\n"); fclose(fp); } void calc(void) /*各学生の平均点を計算、平均点の優秀者(80点以上)及び不合格者(60点未満)を摘出*/ { int n,k; float sum; for(n=0; n<gakusei; n++) { sum=0; for(k=0; k<kamoku; k++) { sum+=(float)tennsuu[n][k]; } heikin[n]=sum/kamoku; } } void edit(void) /*平均点、優秀者及び不合格者の氏名を付加した成績表を出力(outfile.d.txtに書き込み)*/ { int n; FILE *seiseki; seiseki=fopen("outfile.d.txt","w"); printf("outfile.d.txt\n\n"); fprintf(seiseki,"氏名 %s 平均\n",kamokumei); printf("氏名 %s 平均\n",kamokumei); fprintf(seiseki,"%s\n",shimei); printf("%s\n",shimei); for(n=0; n<gakusei; n++) { fprintf(seiseki,"%s",tennsuu); printf("%s\n",tennsuu); } printf("\n"); fprintf(seiseki,"平均点優秀者\n"); printf("平均点優秀者\n"); fprintf(seiseki,"平均点不合格者"); printf("平均点不合格者\n"); fclose(seiseki); } 添付した画像のoutfile.d.txtのようなフォーマットで出力したいのですが、氏名がうまく出力できません。また、点数もinfile.d.txtの最後の行しか読み込んでくれません。 どのように書き換えればよいのでしょうか? よろしくお願いします。 *infile.d.txtについて 10 5 ⇒学生数と科目数 材料力学 熱力学 ・・・ ⇒科目名 石川 川上 佐藤 ・・・ ⇒学生の氏名 78 95 75 86 ・・・ ⇒各科目の点数(1行につき5科目×2人分の点数が書き込まれています。)

  • c言語 構造体

    大学での内容なのですが,『名前,数学の点数,英語の点数,国語の点数を格納できる(メンバに持つ)構造体を宣言し,この構造体の配列を用いて,3人分の情報をキーボードから入力後,各科目の平均点を画面に表示するプログラムを作成せよ.』という問題で,自分なりに作ってみたのですがうまくいきません.どなたか教えていただけませんか? 一応自分で作ったものを下に載せておきます. ================================================================ #include <stdio.h> #include <string.h> struct test { char name[20]; int sugaku; int eigo; int kokugo; }; int main(void) { struct test suzuki; int (suzuki.sugaku), (suzuki.eigo), (suzuki.kokugo); strcpy(suzuki.name, "Suzuki"); printf("氏名:鈴木 一馬\n"); printf("数学:"); scanf("%d", &suzuki.sugaku); printf("英語:"); scanf("%d", &suzuki.eigo); printf("国語:"); scanf("%d", &suzuki.kokugo); struct test tanaka; int tanaka.sugaku, tanaka.eigo, tanaka.kokugo; strcpy(tanaka.name, "Tanaka"); printf("氏名:田中 二郎\n"); printf("数学:"); scanf("%d", &tanaka.sugaku); printf("英語:"); scanf("%d", &tanaka.eigo); printf("国語:"); scanf("%d", &tanaka.kokugo); struct test yamamoto; int yamamoto.sugaku, yamamoto.eigo, yamamoto.kokugo; strcpy(yamamoto.name, "Yamamoto"); printf("氏名:山本 三弘\n"); printf("数学:"); scanf("%d", &yamamoto.sugaku); printf("英語:"); scanf("%d", &yamamoto.eigo); printf("国語:"); scanf("%d", &yamamoto.kokugo); printf("数学の平均点は%dです。\n", ((suzuki.sugaku + tanaka.sugaku + yamamoto.sugaku) / 3.0)); printf("英語の平均点は%dです。\n", ((suzuki.eigo + tanaka.eigo + yamamoto.eigo) / 3.0)); printf("国語の平均点は%dです。\n", ((suzuki.kokugo, + tanaka.kokugo + yamamoto.kokugo) / 3.0)); return (0); } ================================================================

  • 構造体と関数について質問です

    私はC言語の勉強を始めて2ヶ月の初心者です。 課題に取り組んでいるのですが、まったく進めないので助けていただきたいと思い質問しました。 課題 A君B君C君の3人の国語・算数・理科・社会の点数を入力し、それぞれの合計点と平均点、1番高かった教科を表示する。 というものです。 構造体はstruct subjectData member[3]で 関数は入力をする関数と合計点を出す関数平均点を出す関数最高点を出す関数を使ってということなんですが、まったくわからなく手がつけられないもので、質問させていただきました。 参照渡しを使えということも言われ、参考書をみて戦っているんですがどうも理解ができません。 解説とソースを載せていただけたら助かります。 どなたかよろしくお願いします!

  • 成績処理のプログラムについて・・・

    成績処理のプログラムについて・・・ 先日、http://okwave.jp/qa/q5911162.htmlにて質問させていただいたのですが、今回は平均点の計算及び出力について教えていただければと思います。 #include "stdafx.h" void input(void); void calc(void); void edit(void); int gakusei=10,kamoku=5; /*学生数、科目数*/ char kamokumei[5][40]; /*科目名*/ char shimei[10][40]; /*氏名*/ int tennsuu[10][5]; /*点数*/ float heikin[10]; /*平均点*/ void main() { input(); calc (); edit (); } void input(void) /*データ入力(infile.d.txtから読み込む)*/ { FILE *fp; int m,n,k; fp=fopen("infile.d.txt","r"); if(fp==NULL) { printf("infile.d.txtが開けません\n"); } fscanf(fp,"%d %d\n",&gakusei,&kamoku); for(m=0; m<kamoku; m++) { fscanf(fp,"%s",kamokumei[m]); } for(n=0; n<gakusei; n++) { fscanf(fp,"%s",shimei[n]); } fscanf(fp,"%s %s・・・%s",&tennsuu[0][0],&tennsuu[1][0],・・・ ,&tennsuu[9][0]); ・・・ fscanf(fp,"%s %s・・・%s",&tennsuu[0][4],&tennsuu[1][4],・・・,&tennsuu[9][4]); fclose(fp); } void calc(void) /*各学生の平均点を計算、平均点の優秀者(80点以上)及び不合格者(60点未満)を摘出*/ { int n,k; float sum=0; for(n=0; n<gakusei; n++) { for(k=0; k<kamoku; k++) { sum+=(float)tennsuu[n][k]; } heikin[n]=sum/kamoku; } } void edit(void) /*平均点、優秀者及び不合格者の氏名を付加した成績表を出力(outfile.d.txtに書き込み)*/ { FILE *seiseki; int m,n,k; seiseki=fopen("outfile.d.txt","w"); fprintf(seiseki,"氏名"); for(m=0; m<kamoku; m++) { fprintf(seiseki," %s",kamokumei[m]); } fprintf(seiseki," 平均\n"); fprintf(seiseki,"%s %s %s・・・%s %d\n",shimei[0],&tennsuu[0][0],&tennsuu[1][0],・・・,&tennsuu[4][0],heikin[0]); ・・・ fprintf(seiseki,"%s %s %s・・・%s %d\n",shimei[9],&tennsuu[5][4],&tennsuu[6][4],・・・,&tennsuu[9][4],heikin[9]); fprintf(seiseki,"\n"); fprintf(seiseki,"平均点優秀者\n"); fprintf(seiseki,"平均点不合格者"); fclose(seiseki); } 上記のプログラムを"outfile.d.txt"に出力してみると、平均点が82となる部分が-1610612736、74となる部分が-1610612736と表示されたりしてしまいます。 平均点の計算部分が違うのか、出力の仕方が悪いのか色々試してみたのですが思うようにできません。 どのように直せばよいのでしょうか? よろしくお願いします。 また、平均点の優秀者・不合格者の摘出方法についてもどのようにすれば良いのか教えて頂けるとありがたいです。

  • データの読み込みについて

    data.txt----- kokugo,10,50,33 eigo,80,11,40 rika,10,80,80 -------------- 最近JAVAをはじめたばかりです。 このようなデータがあるのですがこれを 名前 - 国語の得点 - 英語の得点 - 理科の得点 のように格納して表示させたいのですが今詰まっています。 データの読み込みは出来たのですが格納の仕方がさっぱり分からないので教えてください

    • ベストアンサー
    • Java
  • tiny basicでプログラム作成

    次の問題のプログラムをtiny basicで作成してみてくだい。 理科、数学、国語、音楽、体育の点数を読み込み、5科目の平均点を計算し、平均点が60点以上で合格、60点以下なら不合格と表示するプログラムをつくりなさい。 各科目の点数は、理科50点、数学80点、国語40点、音楽60点、体育64点とする。

専門家に質問してみよう