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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

6252閲覧

成績表を表示する 2次元配列

tikuno

総合スコア18

C

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/06/29 01:22

「キーボードから 4 人分の数学と英語と国語の成績 (整数) を int 型の二次元配列に入力し、 それぞれの平均点と共に、次のように表として画面に出力するプログラムを作成せよ (平均 点は小数点以下第二位まで表示)。ここで、科目名は char 型の 2 次元配列 class[3][7] に格 納しておき、for 文などで下 3 行を表示できるようにすること。」
_____A____B___C__D_Heikin
Sugaku 40 100 50 50 60.00
Eigo 60 80 100 30 67.50
Kokugo 26 25 50 60 40.25
という問題で以下のようにプログラムを作成したのですが最初に格納した科目名をどう表示すればいいのか、また平均がこのままだと全て同じ変な値になってしまいます。どうすればよろしいのでしょうか?

#include<stdio.h> int main(void) { int date[3][4]; int i,j; int total[3]; double ave=0.0; char class[3][7]={"Sugaku","Eigo","Kokugo"}; for(i=0;i<3;i++){ printf("Input %s date:\n",class[i]); for(j=0;j<4;j++){ printf("%c:",'A'+j); scanf("%d",&date[i][j]); } } for(i=0;i<3;i++){ total[i]=0; for(j=0;j<4;j++){ total[i]=total[i]+date[i][j]; } ave=ave+total[i]; ave=ave/4; } for(i=0;i<3;i++){ for(j=0;j<4;j++){ printf("%6d",date[i][j]); } printf("%lf\n",ave); } return 0; }

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

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

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

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

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

guest

回答2

0

ベストアンサー

ちょっと面倒でしょうけども,まず最初に
forを使わずに指定の出力を達成するコードを書いてみてはどうでしょうか.
(それができなければforだのを使ったところで書けるわけがないので)

で,それができたならば,そのコードを見て,
「forを使えば短くまとめて書けそうな場所」があったら,まとめていけばよいでしょう.


各科目の平均値というのは,当然ながら科目の種類数だけ存在するわけですから,
「出力処理を開始する前に計算を済ませておく」方針なのであれば,少なくとも科目の種類数と同じだけの個数のデータとして保持しておかねばならないでしょう.
別の方針としては「ある科目の平均値を出力しなくてはならないタイミングまでは,その科目の平均値というデータは要らない」わけなので,本当に出力したいところで計算して出力すれば良いでしょう.

投稿2020/06/29 01:45

fana

総合スコア11658

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

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

0

最初に格納した科目名をどう表示すればいいのか

scanfで成績を入力するときと同じ処理を行えばよいのでは?

平均がこのままだと全て同じ変な値になってしまいます

平均値算出と、結果表示が別ループですから、結果表示時点で平均値は常に同じ値となります。

殆ど同じ問題について、別の質問者からも質問が寄せられております。
課題はなるべく独力で解決すべきです。

投稿2020/06/29 01:31

DreamTheater

総合スコア1095

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問