ページ 11

1次元配列を利用する関数について

Posted: 2015年7月27日(月) 22:14
by haruka
実行結果が0.000000と表示されます。
どうやったらちゃんとした数字が表示されるのか教えてください。

コード:

#include<stdio.h>
int avg_score(int x[10]);
int main(void)
{
  int a[10]={0,2,1,1,4,4,0,2,0,6};
  int b[10]={1,3,1,0,6,3,1,2,1,0};

  double avga,avgb;
  int wina,winb;
  
  avg_score(a);
  avg_score(b);
    
  printf("チームaの平均得点は%f\n",avga);
  printf("チームbの平均得点は%f\n",avgb);


}

int avg_score(int x[10])
{
  int i,sum=0;
  int avg;
  for(i=0;i<10;i++){
    sum+=x[i];
  }
  avg=sum/10;
  return avg;
}

Re: 1次元配列を利用する関数について

Posted: 2015年7月27日(月) 22:18
by box
haruka さんが書きました:

コード:

  avg_score(a);
  avg_score(b);
これだと、せっかく戻ってきた戻り値を使わずに捨ててしまっています。
これらを直接printfするか、何かの変数に代入してからその値をprintfするかしてください。

Re: 1次元配列を利用する関数について

Posted: 2015年7月27日(月) 22:20
by みけCAT
  • avg_score関数の戻り値をdouble型にする
  • main関数で、avg_score(a)の戻り値をavgaに代入するようにする
  • main関数で、avg_score(b)の戻り値をavgbに代入するようにする
  • avg_score関数の変数sumおよびavgをdouble型にする
  • 以上の変更を行ったコードを保存し、コンパイルし、そのプログラムを実行する

Re: 1次元配列を利用する関数について

Posted: 2015年7月27日(月) 22:40
by haruka
できました。
ご親切な返信ありがとうございました。

Re: 1次元配列を利用する関数について

Posted: 2015年7月27日(月) 22:45
by みけCAT
きちんと書きなおしてみました。

コード:

<?php
function main()
{
  $a=array(0,2,1,1,4,4,0,2,0,6);
  $b=array(1,3,1,0,6,3,1,2,1,0);

  $avga=avg_score($a);
  $avgb=avg_score($b);
    
  printf("チームaの平均得点は%f\n",$avga);
  printf("チームbの平均得点は%f\n",$avgb);


}

function avg_score($x)
{
  $sum=0;
  for($i=0;$i<10;$i++){
    $sum+=$x[$i];
  }
  $avg=$sum/10;
  return $avg;
}

main();

Re: 1次元配列を利用する関数について

Posted: 2015年7月27日(月) 23:51
by みけCAT
haruka さんが書きました:できました。
ご親切な返信ありがとうございました。
解決でしたら、解決チェックをお願いします。
これまでの記事のタイトルの変更は行わず、「送信」ボタンの右の「解決!」にチェックを入れて返信をしてください。