見出し画像

(答案提出)C言語教室 第4回 - 配列を関数に渡す

私は最近、kznさんの記事に夢中!
四半世紀ぶりに、Cプログラミングに挑戦しました。

課題

・配列のそれぞれの値の平均値を小数で返す関数を書きなさい。

・配列のそれぞれの値の中でもっとも大きい値を返す関数を書きなさい。

https://note.com/kazushinakamura/n/n30240dd5a26c

私の答案

最初の答案提出後、最大値を返す関数に負の数ばかりの配列を渡すと、機能しない事に気づきました。再提出させてください。

/* main.c */  #include  <stdio.h>

double ave(int* x, int y) {
  int i;
  double sum = 0.0;

  for (i = 0; i < y; i++) {
     sum += x[i];
  }

  return sum / y;
}

int max(int* x, int y) {
  int i;
  int m;

  m = x[0]; 

  for (i = 1; i < y; i++) {
    if ( x[i] > m ) {
      m = x[i];
    }
  }  
  return m;
}

void main() { 
  int a[] = {2, 9};

  printf("a[0] = %d\n", a[0]);
  printf("a[1] = %d\n", a[1]);
 
  printf("Average = %f\n", ave(a, 2));
  printf("Max = %d\n", max(a, 2));
}

(下記のkznさんのご指摘に基づいて修正済みのバージョンです)


コメント

どうでしょうか?
kznさんの例題を参考に、コーディングしました。

一応は機能するみたいです。
(動作環境;https://9cguide.appspot.com/web_picoc_em.html )


実行結果

	a[0] = 2
	a[1] = 9
	Average = 5.500000
	Max = 9

私はそもそも、C言語の文法を忘れてます。
人間が話す自然言語と同じで、使わなかったらどんどん忘れますね。
頭の中で、いろんな文法がごちゃごちゃになってます。

if文をExcel式みたいに書いてしまって、あれ?なんでエラー?みたいな。

一つの式の中に、整数型と実数型があっても良かったんでしたっけ?

そもそも、バックスラッシュ("\")の入力の仕方がわからない。
キーボード上の"\"を押すと、"¥"が表示されてしまう。
仕方がないので、kznさんのWebページから"\"をコピペしてコーディングしました。どうするんだっけ???

コメントいただけると幸甚です。


追記(2022.11.25)

kznさんからレスポンスをいただきました。
有難うございました。

いろいろとご指導いただき、ますます楽しくなってきました。
今後とも宜しくお願いします。


これまでの収益は全て、それを必要としておられる方々へ、支援機関を通して寄付させていただきました。この活動は今後も継続したいと思っています。引き続きよろしくお願いいたします。