独習C、例5.1.1の1次配列を使い、最高気温、最低気温を求める方法について

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

独習C、例5.1.1の1次配列を使い、最高気温、最低気温を求める方法について

#1

投稿記事 by パクパク » 7年前

[1] 質問文
 [1.1] 自分が今行いたい事は何か

<問題>
1次配列を使い、ある月の毎日の正午の気温を受け取って、その月の平均気温と最高気温、最低気温を報告して下さい。

<疑問点>
独習C、例5.1.1の最高気温、最低気温を求める方法なんですが、正答だと初期値の0と200のままになってしまします。この場合の初期値をなぜそのように設定するのかわかりません。また、この場合のもっと良いコードがあれば合わせてご教授お願い致します。

 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
 
<独習Cの例5.1.1の正答になります>

コード:

/* ch05-02.c */
#include <stdio.h>

int main(void)
{
  int temp[31], i, min, max, avg;
  int days;

  printf("月の日数は? ");
  scanf("%d", &days);

  for (i = 0; i < days; i++) {
    printf("%d 日の正午の気温を入力してください: ", i + 1);
    scanf("%d", &temp[i]);
  }

  /* 平均を求める */
  avg = 0;
  for (i = 0; i < days; i++)
    avg = avg + temp[i];
  printf("平均気温: %d\n", avg / days);

  /* 最高気温と最低気温を求める */
  min = 0;  /* minとmaxを初期化 */
  max = 200;
  for (i = 0; i < days; i++) {
    if (min < temp[i])
      min == temp[i];
    if (max > temp[i])
      max == temp[i];
  }

  printf("最低気温: %d\n", min);
  printf("最高気温: %d\n", max);

  return 0;
}


[2] 環境  
 [2.1] OS : Windows
 [2.2] コンパイラ名 : VC++ 2010 Express

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 独習C、例5.1.1の1次配列を使い、最高気温、最低気温を求める方法について

#2

投稿記事 by softya(ソフト屋) » 7年前

これ本当に正解として載っていたものですか?
これが本に載っているのなら間違っていますので、サイトなどの正誤表を確認してください。
版がわからないので第4版のリンクを紹介しておきます。
https://www.shoeisha.co.jp/book/errata/ ... =all&mode=
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
あたっしゅ
記事: 334
登録日時: 10年前
住所: 東京23区
連絡を取る:

Re: 独習C、例5.1.1の1次配列を使い、最高気温、最低気温を求める方法について

#3

投稿記事 by あたっしゅ » 7年前

「教授(きょうじゅ)」は、「教示(きょうじ)」です。

28 行目 min == temp;
30 行目 min == temp;

の == は、= の間違いでは ?

== は比較、= は代入です。C 言語の初心者が、よく間違うところです。

よくみたら、24 行目から 31 行目、ほとんど書き直しが必要か。

コード:

  min = 200;  /* minとmaxを初期化 */
  max = 0;
  for (i = 0; i < days; i++) {
    if (min > temp[i]) {
      min = temp[i];
    }
    if (max < temp[i]) {
      max = temp[i];
    }
  }
if や for は、一行しかなくても、(エラーは出ませんが) { と } で囲ったほうがいいです。

おっと、レスを書いているうちに softya さんの書き込みが。
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

パクパク
記事: 23
登録日時: 7年前

Re: 独習C、例5.1.1の1次配列を使い、最高気温、最低気温を求める方法について

#4

投稿記事 by パクパク » 7年前

あたっしゅ さんが書きました:「教授(きょうじゅ)」は、「教示(きょうじ)」です。

28 行目 min == temp;
30 行目 min == temp;

の == は、= の間違いでは ?

== は比較、= は代入です。C 言語の初心者が、よく間違うところです。


ご教示ありがとうございます。一生間違って使うところでした……。

== は私がなんとかならないかと足掻いた箇所です。正答では=です。

所持している独習Cは第4版第8刷なので、上記以外は正答のはず……です。

返信ありがとうございます。

閉鎖

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