• 締切済み

プログラミング 難問

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

みんなの回答

回答No.7

問5の回答です。 #include <err.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #define DATE_FORMAT "%Y/%m/%d" int main(void) { struct tm tm = {}; char buf[1024]; time_t t; int z; printf("Base date (e.g. 2000/01/31):"); if (fgets(buf, sizeof(buf), stdin) == NULL || strptime(buf, DATE_FORMAT, &tm) == NULL) errx(-1, "cannot parse the given date"); printf("How many day(s) later?:"); scanf("%d", &z); t = timegm(&tm); t += 60 * 60 * 24 * z; gmtime_r(&t, &tm); strftime(buf, sizeof(buf), DATE_FORMAT, &tm); printf("%s\n", buf); return EXIT_SUCCESS; } 出力結果 Base date (e.g. 2000/01/31):2011/11/03 How many day(s) later?:16777216 47946/04/19 ...学生がこれを提出してきたときに0点にするのか100点にするのかはTAのレベル次第ですが、自分がかつてTAしていたころはそういう学生は好きでしたよ。あと、課題の問題文で検索するのもTAの仕事だと思ってました。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.6

む, 「問3」が 2つあるのか. #5 に挙げたのは補足された方の「問3」. ちなみに「しっかりと書いて引用します。」というのは「何を」書くといっている?

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

冷静に考えると, ここで回答が得られたとしてもそれを「課題の答え」として出すには多大な困難を伴うんじゃないかなぁ. 回答そのものが「著作物」と解釈されるからそれをそのまま出すわけにはいかない (著作権法って知ってる?) し, 「引用する」ためには「どこから引用したのか」を書かなきゃならないけどまさかこの質問の URL を書くわけにはいかない (書いたら「自分で作ったものではない」ことが一瞬で分かる) でしょ? つまり, 「ありそうなプログラムを書く」ことで質問者を窮地に追い詰めることもできたりする (笑) と質問者の良心をとがめたところで問3 だけ: #include <stdio.h> #include <stdlib.h> int main() { char bin[8+1] = {0}; for (int i = 0; i < sizeof bin-1; ++i) { scanf("%c", bin+i); } printf("%ld\n", strtol(bin, NULL, 2)); return EXIT_SUCCESS; } 「問題に書いてある条件」はすべて満たしているはず.

watashihatdesu
質問者

お礼

キーボードの方の答えありがとうございます 難問 と記したものの僕の答えはどうでしょうか? ちなみに、このプログラム以外に実行結果が同じになるものってどんなものがあります?

watashihatdesu
質問者

補足

しっかりと書いて引用します。 僕なりの答えは 1 #include <stdio.h> 2 3 int main() 4 { 5 FILE *fp; 6 char name[6]; 7 int n; 8 int score1, score2, score3; 9 int sum1, sum2, sum3; 10 float average; 11 12 fp = fopen("seiseki.txt", "r"); 13 n = sum1 = sum2 = sum3 = 0; 14 while (fscanf(fp, "%s %d %d %d", 15 name, &score1, &score2, &score3) != EOF) { 16 n++; 17 sum1 += score1; 18 sum2 += score2; 19 sum3 += score3; 20 average = (float)(score1 + score2 + score3)/3.0; 21 printf("%s¥t %3d %3d %3d %5.1f¥n", 22 name, score1, score2, score3, average); 23 } 24 printf("¥t%5.1f %5.1f %5.1f¥n", 25 (float)sum1/n, (float)sum2/n, (float)sum3/n); 26 fclose(fp); 27 return 0; 28 } 2)実行例 $ cat seiseki.txt John 100 90 70 Mary 80 55 60 James 40 70 64 $ ./a.exe John 100 90 70 86.7 Mary 80 55 60 65.0 James 40 70 64 58.0 73.3 71.7 64.7 です そのぷろぐらむだと実行結果どうなります?

全文を見る
すると、全ての回答が全文表示されます。
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

ヒントだけ。 問3: 基数変換(8進⇒10進)はどこかで習っているはず。でなきゃこんな問題は出されない。 問4: 各月の日数を配列に格納しておいてあとは計算。 「手計算ならどうするか」を考えてそれをプログラム化するのみ。 閏年考慮を入れるかどうかは出題者次第。 あなたの代わりに単位を取ってあげる義理は全くないので丸投げのうちはこれ以上回答するつもりはありません。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

「難問」というほどでもないですけどね。 先ず、何が分からないかを整理しましょう。 (1)ファイルを読み出し用に開く。 (2)ファイルからデータを読み込む。 (3)ファイルの最後に達したかを知る。 (4)読み込んだデータを空白?で分割する。 (5)点数(文字列)から数値にする。 (6)平均点を求める。 (7)結果を表示する。 ざっと、これだけあります。 分かるところもあるでしょうから、不明な 点を質問してください。勉強なんでしょ? 丸投げで回答して、ツッコまれたら困る と思いますよ。

全文を見る
すると、全ての回答が全文表示されます。
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

#include <stdio.h> #include <stdlib.h> int main(void){ FILE *fp; char name[6]; int i_kamoku[3]; int kamoku[3]; int i; if ( (fp=fopen("seiseki.txt","r"))==NULL ){ printf("seiseki.txt open error\n"); exit(1); } i = 0; kamoku[0] = kamoku[1] = kamoku[2] = 0; while( fscanf(fp, "%s %d %d %d", name, &i_kamoku[0], &i_kamoku[1], &i_kamoku[2]) != EOF ){ i++; kamoku[0] += i_kamoku[0]; kamoku[1] += i_kamoku[1]; kamoku[2] += i_kamoku[2]; } if ( i != 0 ){ printf( "%2.2f %2.2f %2.2f\n", (double)name[0]/i,(double)name[1]/i,(double)name[2]/i); return 0; } return 1; }

watashihatdesu
質問者

お礼

ありがとうございます 実行結果もお願いできますか もしよろしければこの課題もお願いいたします 問3:8桁の2進数の数字を入力すると、10進数に変換して表示するプログラム(prog11.c) を作成しなさい。(配列の練習問題なので、数字を8 個格納できる1 次元配列を 用意し、2 進数の各桁の数字(0 または1)を8 回キーボードから入力して、そ れぞれを配列に格納してから10 進数に変換するプログラムを作ってください) 問4:X 月Y 日からZ 日後の日付を求めるプログラム(prog12.c)を作成しなさい。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

いや、これって貴方の課題じゃないの? 難しいからヒントって言うなら答えるけど、貴方は大丈夫なの? ちゃんと勉強してれば、とっても簡単な課題だよ? 貴方の事を考えると、どこかのバカがソースを丸ごと貼り付けない事を願います。

watashihatdesu
質問者

お礼

ありがとうございます。 できればお願いいたします。 もしよろしければ、この問題より、 以下の問題を解いていただきたいです。 問3:8桁の2進数の数字を入力すると、10進数に変換して表示するプログラム(prog11.c) を作成しなさい。(配列の練習問題なので、数字を8 個格納できる1 次元配列を 用意し、2 進数の各桁の数字(0 または1)を8 回キーボードから入力して、そ れぞれを配列に格納してから10 進数に変換するプログラムを作ってください) 問4:X 月Y 日からZ 日後の日付を求めるプログラム(prog12.c)を作成しなさい。 これは自分の課題です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    自分でやったのですが、どうしてもエラーがでてしまいます。どなたか例をあげていただけませんか。お願いします。 次のデータを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

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

    プログラミングの構造体の課題が出たんですがさっぱりわかりません。どなたかわかる方お願いします。 次の仕様に従って、生徒の科目得点から平均点と評価を求め、評価結果の画面を表示するプログラムを作成しなさい。 与えられた仕様 手順 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' データファイルは空白で区切られています。 こうすれば解けるよ、とかこのサイト見てやればできるよ等の 回答ではなく、この問題の答えを教えてくれたらうれしいです。 自分で理解してやらないと~とか考えてやらないと~等の回答もしないでください。 わがまま言ってすいませんが、わかる方お願いします。

  • 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人分の点数が書き込まれています。)

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

    成績処理のプログラムについて・・・ 先日、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と表示されたりしてしまいます。 平均点の計算部分が違うのか、出力の仕方が悪いのか色々試してみたのですが思うようにできません。 どのように直せばよいのでしょうか? よろしくお願いします。 また、平均点の優秀者・不合格者の摘出方法についてもどのようにすれば良いのか教えて頂けるとありがたいです。

  • printfを使って出力

    以下の課題が分からず困っています。 Scannerを使ってprintfで出力するようなんですが,txtファイルをどうやって読み込めばいいでしょうか? よろしくお願いします。 基本課題3:「成績ファイルを読み込んで科目毎の平均点を表示する」 ---tstfile3.txtの内容----   岡田,90,100,65   青木,70,80,100 ------------------------ 成績ファイル(tstfile3.txt)を読み込んで内容を表示し、 さらに科目ごとの平均値(少数1桁まで)を表示するプログラムを作成せよ。     ---実行結果---      岡田 90 100 65   青木 70 80 100   平均 80.0 90.0 82.5

    • ベストアンサー
    • Java
  • 基本プログラミングのrubyの課題を作ってもなかなか動きません。これを

    基本プログラミングのrubyの課題を作ってもなかなか動きません。これをどうやったら動くようになるでしょうか??何がダメなんでしょう?教えてください・・!(>_<;)) 【問題】 問題1-3 についてはプログラムcreate data.rbを一度実行して作られるファイルmarks2010 を元に取り組むこと.ただし,create data.rb は実行する毎に異なるデータを出力するので,課題で作成する提出ファイル(results2010 等) 作成では, 同一のmarks2010 を用いること.また,使用したmarks2010 を提出すること. 1. ファイルmarks2010 は1000 行からなるデータであり,各行は次のように,学生氏名,10 回分 の試験成績が記されている: "西郷あかり": 50, 33, 67, 64, 47, 27, 42, 51: 45 ただし,受験回数が10 回に満たない者もある.また,最終試験を受けた場合,その成績は行 の最後にコロン「:」の後に記載してある. このファイルから下の基準で各学生の最終成績(点数) を求め,全員の最終成績をファイル (results2010 1) に保存するプログラムを書きなさい(prog1.rb). >ruby prog1.rb marks2010 を実行すると,ファイルresults2010 1 が作成されるようにする.ただし,結果のファイル は,各行一人の氏名と成績を次のように記述したものとする: "西郷あかり": 47.3 ※成績は小数点以下第一位まで.それ以下は四捨五入. 成績基準: 全試験(最終試験も含む) の平均点 また,60.0 点以上を合格として,合格者の氏名と本人の最終成績が記されたファイルpassed2010 1 を作成しなさい. 2. 上と同じファイルmarks2010 に対して,次の基準を用いて前問と同様のことを行いなさい.た だし,提出ファイル名は,(prog2.rb), (results2010 2) および(passed2010 2) ? 成績基準:欠席は2 回まで認め,それ以上の欠席の試験は0 点とした平均点※ ? 60 点以上が合格 ※つまり,試験を3回欠席した場合,全10 回の試験のうち,2回の欠席が認められ,残り1 回の欠席は得点0 と計算される.したがって,試験は8回受けたこととして計算され,実際に 受験した7回分の得点と,実際には受けていない1回分の成績0 点の合計点を8 で割った平均 点が最終成績となる. 【私の作ったプログラム】 infile=open("marks2010","r") outfile=open("results2010 1","w") while data=file.gets split(/[:,]/) print data,\n end arry=file.gets s=0 arry.each{ |i| s=s+i } puts s.to_f/arry.size end infile=close outfile=close ちゃんと名前と平均が出ると思ったんですけど・・・・(T_T)泣

    • ベストアンサー
    • Ruby
  • cobolの超基礎プログラミングについて

    初めまして。 プログラミング未経験からコボルの勉強をしております。 下記の条件のプログラミングを作成したいのですが、 どのようにプログラミングすれば良いのか判らなくて困っております。 皆様のお力添えをいただければと思います。 ・あるファイルには、社員番号、名前、科目、科目得点が入っている。 ・このファイルから得点が70点以上のレコードのみを抽出したい ・科目は3科目あり、今回は国語、数学、英語とする ・終了条件はファイルのデータがなくなるまで 条件は以上です。 現在は主処理のレコード読み込みの繰り返し部分の作成に頭を悩ませております。 ifを使用してプログラミングすると考えたのですが、条件の書き方やどのデータを使用するのか等、まだプログラミングというものが理解できておらず、詳細に教えて下さると全体像がわかるのではと思い質問させていただきました。 お忙しい中恐縮ですが、宜しくお願い致します。

  • 関数で算出した値を他の関数で使いたい。

    こんにちは。「平均点を出す関数」と「数学の点数のベスト3を出す関数」を使って、「1.平均点」と「2.数学の点数のベスト3の名前とその点数と、各々の点数と平均点との差」を求めるプログラムを作っています。平均点とベスト3の名前とその点数は出せるのですが、「平均点を出す関数」で求めた値をもって来れず、「平均点との差」がうまく表示できません。ソースは下記のようになっております。簡単な修正で直せる方法を教えていただきたいのですが。宜しくお願い致します。 #define STUDENT 4 #include <stdio.h> struct SEISEKI_T {  char name[20]; /* 生徒名を格納する配列。40バイト格納化。 */ int math; /* 数学の点数 */}; typedef struct SEISEKI_T SEISEKI; int average(SEISEKI *sp, int num, int *p); int rank_math(SEISEKI *sp, int num, int *p); int main( ) { SEISEKI seito[STUDENT] = { /* 生徒名と数学の点数のデータ */ { "佐藤", 63},{ "鈴木", 68},{ "高橋", 61},{ "田中", 40}, }; SEISEKI *sp; sp = seito; static int avg[0] = {0}; average(seito, SUBJECT, avg); rank_math(seito, SUBJECT, avg); printf("\n"); return 0; } int average(SEISEKI *sp, int num, int *p) { int i; /* ループ変数 */ static int avg[0] ={0}; for (i = 0; i < 4 ; i++) { avg[0] += (sp + i)->math; } avg[0] = avg[0] / 4 ; printf( "数学 = %3d \n", avg[0]); printf("\n\n"); } int rank_math(SEISEKI *sp, int num, int *p) { int i; /* ループ変数1 */ int j; /* ループ変数2 */ int sa_m = 0; /* 数学の上位成績者の点数と平均点との差。*/ SEISEKI dumy; /* struct SEISEKI_T 型の構造体 dumy */ for ( i = 0 ; i < STUDENT - 1 ; i++ ) { for ( j = 0 ; j < STUDENT - i - 1 ; j++ ) { if( ((sp + j)->math) < ((sp + j + 1)->math) ) { dumy = *(sp + j); *(sp + j) = *(sp + j + 1); *(sp + j + 1) = dumy; } } } printf( "■数学上位成績者\n" ); printf( "----------------------------------\n" ); printf( "順位 名前 点数 平均+\n" ); printf( "----------------------------------\n" ); for ( j = 0 ; j < 3 ; j++ ) { sa_m = (sp + j)->math - *p; printf( " %d %6s %3d %2d\n" , j + 1 , (sp + j)->name , (sp + j)->math , sa_m); } return 0; }

  • プログラミングについて

    目標 1.偏差値が一番良い学生の番号,科目A,B,C の得点,平均点,偏差値の表示. 2.合計点が181 点~210 点,211 点~240 点,241 点~270 点,271 点~300点 の学生の人数を数え,その度数分布の表示。 手順 1.クラスの標準偏差を求め,各学生の偏差値を求めよ. その結果を画面に出力する。 2.成績優秀者(偏差値が一番良い学生)を見つけよ. 一番が複数いる場合は全員表示せよ. 3.度数分布と2.ををResults.txt ファイルに出力せよ。 要素数4 のint 型配列を作成して0 で初期化し,一人ひとり数える. 最後に度数分布を作れ(度数分布を作る際にはif文を使わない). クラスのデータは与えられており、50人の2教科分の点数が与えられています。 これは構造配列を使い、Studentsに格納。もう1教科分の点数を整数の一様乱数により格納。 合計50人×3教科のテストデータの集計をするプログラムです。 というプログラミングを作りたいです。 途中まで作りましたが長くなりすぎてわからなくなりました。 どなたか教えてくださいお願いします。 #include <stdio.h> #include <stdlib.h> #include <math.h> #define SIZE 50 struct students{ int No; int A; int B; int C; int Sum; double Avee; double hensa; }; double Average(int a){ double b; b=(double)a/3.0; return b; } double Hensachi(double a,double b,double c){ double d; d=(double)50+10*(a-b)/c; return d; } int main(void){ struct students Std[SIZE]; srand(1000); int i; double Ave,Sum=0,H,stand; FILE *file=fopen("Data.txt","r"); for(i=0;i<SIZE;i++){ fscanf(file,"%d",&Std[i].No); fscanf(file,"%d",&Std[i].A); fscanf(file,"%d",&Std[i].B); Std[i].C=(int)(rand()/(RAND_MAX +1.0)*31)+70; Std[i].Sum=Std[i].A+Std[i].B+Std[i].C; Std[i].Avee=Average(Std[i].Sum); Sum+=Std[i].Avee; } fclose(file); Ave=(double)Sum/(SIZE); for(i=0;i<SIZE;i++){ H+=(double)pow(Std[i].Avee-Ave,2); } stand=sqrt(H/50); for(i=0;i<SIZE;i++){ Std[i].hensa=Hensachi(Std[i].Avee,Ave, stand); printf("%4d,%3.1lf,%3.1lf\n",Std[i].Sum,Std[i].Avee,Std[i].hensa); } return 0; } 自分が作ったのはここまででです。

  • C言語でファイルを表示させるプログラミングがわかりません。

    以下のC言語のプログラミングがわかりません。どなたかわかりませんか? ファイルdata.txtに人の名前と生年月日を追記し、ファイルをいったん閉じてから開きなおし、ファイルの内容を表示するプログラムを作成する。 同じプログラムを2度実行すると、前に入力したときの人の名前と生年月日も表示されるようになる。 複数人のデータが連続して入力できるように工夫する。形式は以下のようにスペースとコンマで区切って記録する。(文字列の後ろにはスペースを入れるように注意する。) Taro , 1985, 6,23 Jiro ,1983, 7,31 そして、 半角の名前と 生年月日(三つの数字)がコンマで区切って各人に対してファイルに記録できるようにする。 一人分のデータが一行で記録されている。 1回の実行で,複数人のデータを連続して入力できる。 全然わからなくて以下のようなことしかできませんでした。 #include<stdio.h> int main() { char name[20]; int i,j,k; scanf("%s ,%d, %d, %d", name, &i, &j, &k); printf("%s ,%d, %d, %d", name, i, j, k); }

このQ&Aのポイント
  • 付き合いが1年経つも彼氏から同棲の話がない
  • 彼氏の異動があるため、同棲計画が保留になった
  • 友人からは彼氏の結婚意思を問われる
回答を見る