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

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

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

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

Q&A

解決済

2回答

2281閲覧

配列を用いた合計点の出し方

tanakaemi

総合スコア2

C

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

0グッド

0クリップ

投稿2021/12/19 18:59

前提・実現したいこと

下記の問題をc言語を用いて解きたいです。

(1)各生徒に対する科目1から3の得点と、3科目の合計点を表示するようにしなさい。

(表示例)
科目1 科目2 科目3 3科目の合計点
60  30  20  110
70  80  50  200
80  80  80  240 
70  90  80  240
30  20  90  140   

(2)縦方向(科目ごと)の合計も計算して、
ten[5][0], ten[5][1], ten[5][2], ten[5][3]にセットして表示しなさい。

(表示例)
科目1 科目2 科目3 3科目の合計点
60  30  20  110
70  80  50  200
80  80  80  240 
70  90  80  240
30  20  90  140 
ーーーーーーーーーーーー
310 300 320 930   

該当のソースコード

#include<stdio.h> main() { int i,j,a; int ten[5][4]; for(i=0;i<=4;i++){ for(j=0;j<=2;j++){ printf("ten[%d][%d]=",i,j); scanf("%d",&a); ten[i][j]=a; } } printf("-----\n"); for(i=0;i<=4;i++){ ten[i][3]=0; for(j=0;j<=2;j++){ ten[i][3]=ten[i][3]+ten[i][j]; } printf("ten[%d][3]=%d\n",i,ten[i][3]); } }

試したこと

(1)上のプログラミングだと合計点は表示できるのですが、科目1~3の得点が表示できないので、printfをどのように使うか教えて頂きたいです。

(2)int ten[6][4]; を用いて配列を増やせばいいことはわかるのですが、どのように書けば良いか教えて頂きたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

y_waiwai

2021/12/19 23:04

まず、その提示した得点はどういう配列にどういうふうに入ってるんでしょうか 科目1から3の得点、ってのはどういうことでしょう。 3科目の合計点、ってのはどこの合計点でしょうか
guest

回答2

0

こんなかんじで。

c

1#include<stdio.h> 2main() 3{ 4 int i,j,a; 5 int ten[5][4]; /* 入力する最大人数がわかってるなら、個人ごとの合計も別変数にしてもいいかも? */ 6 /* 教科ごとの集計用の変数を定義する */ 7 8 for(i=0;i<5;i++){ /* ちょっと変えました */ 9 for(j=0;j<3;j++){ /* ちょっと変えました */ 10 printf("ten[%d][%d]=",i,j); 11 scanf("%d",&a); 12 ten[i][j]=a; 13 } 14 } 15 16 printf("-----\n"); 17 18 for(i=0;i<5;i++){ /* ちょっと変えました */ 19/* 20 この場合はループよりべた書きの方がつかいやすいかなあ 21 ten[i][3]=0; 22 for(j=0;j<=2;j++){ 23 ten[i][3]=ten[i][3]+ten[i][j]; 24 } 25*/ 26 /* 個人の合計を求める(上記の代替えコード) */ 27 28 printf("ten[%d][3]=%d\n",i,ten[i][3]); /*個人ごとの点数を表示する */ 29 30 /* 教科ごとに点数を集計する */ 31 } 32 33 printf("-----\n"); /* 追加しました */ 34 35 /* 教科ごとの集計を表示する*/ 36}

投稿2021/12/20 08:41

編集2021/12/20 08:43
takasima20

総合スコア7464

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

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

0

ベストアンサー

「かっこいいこと」を考えずにまずベタにやってみたらどうですか?

科目1の合計点は、ten[0][0]+ten[1][0]+ten[2][0]+ten[3][0]+ten[4][0]
科目2の合計点は、ten[0][1]+ten[1][1]+ten[2][1]+ten[3][1]+ten[4][1]
科目3の合計点は、ten[0][2]+ten[1][2]+ten[2][2]+ten[3][2]+ten[4][2]
3科目の合計点の合計点は、ten[0][3]+ten[1][3]+ten[2][3]+ten[3][3]+ten[4][3]
であることは理解できていますか?

これをそのまま追加すれば

C

1#include<stdio.h> 2int main(void) //Cの標準に筆頭で載っている書き方にするならこれがベター 3{ 4 int i,j; 5 int ten[5][4]={//いちいち入力するのが面倒なので初期値で代替 6 {60,30,20}, 7 {70,80,50}, 8 {80,80,80}, 9 {70,90,80}, 10 {30,20,90} 11 }; 12/* 13 for(i=0;i<=4;i++){ 14 for(j=0;j<=2;j++){ 15 printf("ten[%d][%d]=",i,j); 16 scanf("%d",&a); 17 ten[i][j]=a; 18 } 19 } 20 printf("-----\n"); 21*/ 22 for(i=0;i<=4;i++){ 23 ten[i][3]=0; 24 for(j=0;j<=2;j++){ 25 ten[i][3]=ten[i][3]+ten[i][j]; 26 } 27 //printf("ten[%d][3]=%d\n",i,ten[i][3]); //「表示例」に対し適切でない 28 } 29 printf(" 科目1 科目2 科目3 3科目の合計点\n"); 30 printf("%6d",ten[0][0]); 31 printf("%6d",ten[0][1]); 32 printf("%6d",ten[0][2]); 33 printf("%6d",ten[0][3]); 34 printf("\n"); 35 printf("%6d",ten[1][0]); 36 printf("%6d",ten[1][1]); 37 printf("%6d",ten[1][2]); 38 printf("%6d",ten[1][3]); 39 printf("\n"); 40 printf("%6d",ten[2][0]); 41 printf("%6d",ten[2][1]); 42 printf("%6d",ten[2][2]); 43 printf("%6d",ten[2][3]); 44 printf("\n"); 45 printf("%6d",ten[3][0]); 46 printf("%6d",ten[3][1]); 47 printf("%6d",ten[3][2]); 48 printf("%6d",ten[3][3]); 49 printf("\n"); 50 printf("%6d",ten[4][0]); 51 printf("%6d",ten[4][1]); 52 printf("%6d",ten[4][2]); 53 printf("%6d",ten[4][3]); 54 printf("\n"); 55 56 printf("--------------------------------\n"); 57 printf("%6d",ten[0][0]+ten[1][0]+ten[2][0]+ten[3][0]+ten[4][0]); 58 printf("%6d",ten[0][1]+ten[1][1]+ten[2][1]+ten[3][1]+ten[4][1]); 59 printf("%6d",ten[0][2]+ten[1][2]+ten[2][2]+ten[3][2]+ten[4][2]); 60 printf("%6d",ten[0][3]+ten[1][3]+ten[2][3]+ten[3][3]+ten[4][3]); 61 printf("\n"); 62}

(表示が気にくわないなら適宜調整してもらうとして)これを眺めて「規則性」が見えたならその規則性をもとにまとめていけばいいわけで。

投稿2021/12/19 23:51

編集2021/12/20 00:00
thkana

総合スコア7703

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問