配列について教えてください!

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みみ
記事: 4
登録日時: 5年前

配列について教えてください!

#1

投稿記事 by みみ » 5年前

二次元配列に関して質問です。c言語、初学者です。

身長や体重という計測値 を items という2次元配列を用いて、5人の体重と身長の 平均値を求めるプログラムを行いたいです。
以下がそのデータです。
体重:54㎏・47㎏・48㎏・55㎏・57㎏
身長:164㎝・153㎝・160㎝・158㎝・165㎝

コード:

#include <stdio.h>
int main(void){
    int i, k, n, m;
    float items[2][5] = {{54, 47, 48, 55, 57},{164, 153, 160, 158, 165}};
    float mean[2], sum[2];
    
    n = 5;
    m = 2;
    
    for (k = 0; k < m; k++){
        for (i = 0; i < n; i++){
            sum[0] += items[k][i];
            sum[1] += items[k][i];
        }
    }
    
    for (k = 0; k < m; k++){ 
        for (i = 0; i < n; i++){
            mean[0] = sum[0] / n;
            mean[1] = sum[1] / n;
        }
    }
    printf("%5.2f [kg]\n%5.2f [cm]\n", mean[0], mean[1]);
}
出力値を体重52㎏・身長160㎝にしたいのですが、出力結果が nan と表示されてしまいます。エラーは出ていません。
教えて頂きたいです。よろしくお願いいたします。

ジョセフソン接合
記事: 6
登録日時: 5年前

Re: 配列について教えてください!

#2

投稿記事 by ジョセフソン接合 » 5年前

配列sumを0で初期化すると出力結果は変わるでしょうか。

みみ
記事: 4
登録日時: 5年前

Re: 配列について教えてください!

#3

投稿記事 by みみ » 5年前

ジョセフソン接合さん、返信ありがとうございます!

mean[2]={0, 0}, sum[2]={0, 0}; にして出力すると、

212.20 [kg]
212.20 [cm]

になり、数字が表れました。

ジョセフソン接合
記事: 6
登録日時: 5年前

Re: 配列について教えてください!

#4

投稿記事 by ジョセフソン接合 » 5年前

良かったです。

あとは二重のfor文についてよく考えてみてください。
たとえば1つ目の二重のfor文を開いてみると
sum[0] += items[0][0]
sum[1] += items[0][0]

sum[0] += items[0][1]
sum[1] += items[0][1]
...
sum[0] += items[1][0]
sum[1] += items[1][0]
...
となります。多分これは望んでいない挙動だと思います。
kは体重と身長を指していることを意識して修正してみてください。

2つ目もiとkについて開いて考えてみてください。

返信

“C言語何でも質問掲示板” へ戻る