質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

2回答

1515閲覧

C言語の問題でプログラムがわかりません。

slax22

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

2クリップ

投稿2021/01/29 03:41

C言語の問題なんですが次の問題でどのようなプログラムを作れば正しく実行例のような結果が得られるかがわかりません。

[問題]
入力ファイルには、受験者ID、クラス、英語、数学、物理の3科目の得点データが繰り返して保存されている。リダ入れクションを用いてEOFを検出するまでファイルからデータを読み込み(上限100人)、出力結果の例に示すようなプログラムを作成せよ。IDデータは整数値、クラスは英文字、得点データは0〜100の整数値とする。
(3科目の合計点の高い順に上位5名の結果と下位5名の結果を出力するプログラムを作成せよ。出力は順位、ID、クラス、英語の得点、数学の得点、物理の得点、および合計点を表示するものとする。なお、同じ合計点の受験者はいないものとして想定して良い。)

[入力ファイル例]
1 A 3 16 8        受験者ID クラス 英の得点 数の得点 物の特典
2 B 38 10 11 説明
3 C 33 13 11    ➡️   1 A 3 16 8
4 D 26 15 10
5 E 34 14 8
6 F 8 12 5

イメージ説明

以上が問題の内容です。
どなたかプログラムを教えていただけないでしょうか。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/01/29 03:46

どこまで書いてみましたか?
otn

2021/01/29 03:47

C言語に入門してないのであれば、まず入門しましょう。 入門したのにまるっきりわからないのであれば、対面で教えてくれる人をs探しましょう。 まるっきりわからないのでは無い場合は、自分で書いたプログラムを質問文に追記しましょう。
1T2R3M4

2021/01/29 04:12

質問する時に以下を確認しなかったのでしょうか。 コードをください・デバッグしてください等の丸投げの質問 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。 問題や質問は実際に調査や作業に取り組み、具体的なところで生まれると考えるためです。 まずは実際に作業に取り組み、つまづいたところで投稿をしてみてください。
guest

回答2

0

ではまず
1:「ファイルからデータを読み込み、読んだ順そのままで全部出力する」
プログラムを書きましょう。

2:「ファイルからデータを読み込み、読んだ順そのままで、アタマの5人分とケツの5人分を出力する」
ように修正しましょう。

3:「ファイルからデータを読み込み、得点の高い順に並び替え、アタマの5人分とケツの5人分を出力する」
ように修正しましょう。ほらできた♪

で、どこまでできますか?

投稿2021/01/29 03:49

編集2021/01/29 04:57
episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

上位5名だけですが、awk・sort・column などの外部機能を使って短めに作ってみました。
お使いの環境にも同じ機能があるといいのですが。
入力ファイル data.txt から読み込みます。

#include <stdio.h> #include <stdlib.h> int main(){ int display_line_num = 5; int header_line_num = 1; FILE *fp = popen("(echo 順位 ID クラス 英語 数学 物理 合計点;cat data.txt|awk '{print $1,$2,$3,$4,$5,$3+$4+$5}'|sort -r -k6|cat -n) |column -t", "r"); for ( int count=0 ; count < display_line_num+header_line_num ; count++ ){ char *ret; char buf[256]; ret = fgets(buf, sizeof(buf), fp); if ( ret == NULL ){ break; } printf("%s", buf); } pclose(fp); }
順位 ID クラス 英語 数学 物理 合計点 1 2 B 38 10 11 59 2 3 C 33 13 11 57 3 5 E 34 14 8 56 4 4 D 26 15 10 51 5 1 A 3 16 8 27

投稿2021/01/29 04:32

編集2021/01/29 04:33
68user

総合スコア2022

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomy-c

2021/01/29 05:09 編集

丸投げ系の質問に対し露骨にコード提示しない方が良いのではないでしょうか? 本人のためにもなりませんし、せっかく他の回答者さんがステップごとに問題を指摘して促してくださってるのですから。 [teratailとは?](https://teratail.com/tour)にも **みんなで正しあい、切磋琢磨出来る環境です** とあるのでまずは質問者が起こしている問題を正してあげるのが、このサイトとしては正しい方法ではないでしょうか?
gentaro

2021/01/29 05:01

質問者が責められるべきだとは思いますが、tomy-cさんの懸念には同意します。回答する人がいる限りガイドラインに違反する人は懲りないでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問