前提・実現したいこと
ここに質問の内容を詳しく書いてください。 卒業課題に躓いてしまったので、皆さんに教授していただきたく投稿させて頂きました。 問1. 学籍番号を入力して、個人の学籍番号、氏名、各科目点数、合計点、平均を表示。 問2. 昇順または降順にしたい列を選んで昇順にせよ。 私なりに調べましたが…qsortを使ったコードが上手く出力できないので、例を教えていただけないでしょうか。 列を指定するコードを入れるとごちゃごちゃになってしまったので、大まかな流れを書いていただけると幸いです。 よろしくお願いいたします。
該当のソースコード
C
1#include<stdio.h> 2 3int main(void) 4{ 5FILE * fp; 6int gakuseki = 0; 7char name[100]; 8int kokugo, math, english, sum; 9double ave; 10double sumk, summ, sume; 11 12if ((fp = fopen("class.dat", "r")) == NULL) /* オープン */ 13printf("\a\aファイル見つかりませんでした。\n"); 14else 15{ 16printf("\aファイルを開きます。\n"); 17printf("\a\n---全生徒のデータを表示---\n"); 18printf(" 学籍番号 | 氏 名 | 国 語 | 数 学 | 英 語 | 合計点 | 個人平均点\n"); 19 20while (fscanf(fp, "%d %s %d %d %d", &gakuseki, name, &kokugo, &math, &english) == 5) 21{ 22int sump = kokugo + math + english; 23printf("%11d | %-8s | %4d | %4d | %4d | %4d | %lf\n", gakuseki, name, kokugo, math, english, sump, (double)sump / 3); 24gakuseki++; 25sumk += kokugo; 26summ += math; 27sume += english; 28 29} 30 31printf(" 各科目平均 | - | %3.1f | %3.1f | %3.1f | - | -\n\n", sumk / gakuseki, summ / gakuseki, sume / gakuseki); 32 33 34fclose(fp); /* クローズ */ 35} 36 37int seach; 38printf("閲覧したい生徒の学籍番号を入力してください。: "); scanf("%d", &seach); 39seach = strstr(gakuseki, seach); 40printf(" 学籍番号 | 氏 名 | 国 語 | 数 学 | 英 語 | 合計点 | 個人平均点\n"); 41printf("%11d | %-8s | %4d | %4d | %4d \n", gakuseki, name, kokugo, math, english); 42 43return 0; 44}
コンパイル結果
閲覧したい生徒の学籍番号を入力しても、何も表示されませんでした。
エラーは出ないのに考えても分かりませんでした。
どなたかご教授よろしくお願いいたします。
class.datの内容はどうなっていますか?
あと未解決の質問に決着をつけなさい
https://teratail.com/users/Bulls#question
せめて『インデント』ぐらいは入れましょうよ…
Tabキーや半角スペースでやるアレです。
今のままでは読む気失せます。
特にfor文内にfor文があるとかのような入れ子の場合、相当読みづらい。
質問のコードもif文内にwhile文がある。
これでは面倒すぎる。
今の状態は、『ひらがなだけで表現し、かつ句読点もないし、顔文字もないような長文で、その長文が改行なしで表現されている感じ』です。
読む気失せます。
まずはインデントぐらいは入れましょう。
卒業課題を丸投げとは大したもんだ。
仕様が曖昧。
情報伏せてわかるわけないでしょ。
> 卒業課題
そういうものはさすがに自力でやらなきゃでしょ…
(仮にここで答えをもらえたとして,提出先にここが発見されたら卒業できなくなる可能性…とか考えないのか?)
tatsu99さん
class.datの内容を記載します。
1 Babe 44 81 63
2 Ruth 60 49 77
3 Lou 11 62 32
4 Gehrig 98 40 8
5 Joe 13 28 33
6 DiMaggio 56 60 63
7 Ian 78 69 73
8 Thorpe 38 48 0
9 Michael 5 88 96
10 Klim 61 4 36
11 Grant 41 54 10
12 Hackett 47 70 90
13 Kieren 79 26 62
14 Perkins 37 11 82
15 Mark 19 31 23
16 McGwire 55 52 87
17 Sammy 21 93 63
18 Sosa 38 13 79
19 Jim 48 45 41
20 Abott 77 61 67
21 Jordan 94 50 19
22 Scottie 7 87 14
23 Pippen 1 40 24
24 Dennis 20 9 86
25 Rodman 5 32 14
26 Pedro 85 95 25
27 Martinez 67 84 46
28 Yurisbel 75 34 29
29 Gracial 18 93 4
30 Moinelo 28 82 75
宜しくお願い致します。
質問の中に含めるべきものを「質問の追記依頼」の所に書く質問者のセンスがすごいと思いました。
「卒業課題」ってことは学校に行ってるんだから、先生とか学生の仲間に聞けばいいのに。これから卒業するってことは何年も行っているんだから、一人も知っている人がいないってことはないでしょう。
なぜこう、できていない・理解できていない複数のことを同時に片付けようとするのか。ひとつずつ理解して順番に片付けましょうよ。
卒業するべきでない人間は卒業するべきではない(トートロジー)