Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】パソコン価格の値の範囲(レンジ)と平均コストを計算するプログラム


問題

個人用システム(パソコン)は、販売業者ごとに異なる価格で販売されています。

ここで、いくつかの業者が提示した価格リスト(単位:100)を見てみましょう。

25.00、30.50、15.00、28.25、58.15、
37.00、16.65、42.00、68.45、53.50

解決策

この価格データから、平均コストと値の範囲(レンジ)を計算します。

一連の数値の中で最大値と最小値の差を「範囲(レンジ)」と呼びます。つまり、範囲 = 最大値 − 最小値です。

まずは、データの中から最大値と最小値を見つけましょう。

Cプログラムの例

以下は、パソコンの価格の範囲と平均コストを計算するCプログラムです。数値を半角スペースで区切って入力し、最後に負の数を入力すると計算結果が表示されます。

#include<stdio.h>
main(){
   int count;
   float value, high, low, sum, average, range;
   sum = 0;
   count = 0;
   printf("数値を1行で入力し、最後に負の数を入力してください\n");
   input:
   scanf("%f", &value);
   if (value < 0)
   goto output;
      count = count + 1;
   if (count == 1)
      high = low = value;
   else if (value > high)
      high = value;
   else if (value < low)
      low = value;
      sum = sum + value;
   goto input;
      output:
   average = sum/count;
   range = high - low;
   printf("\n\n");
   printf("入力個数 : %d\n", count);
   printf("最大値 : %f\n最小値 : %f\n", high, low);
   printf("範囲 : %f\n平均 : %f\n", range, average);
}

プログラムの処理の流れ

このプログラムは goto 文を使って入力を繰り返し受け付ける構造になっています。主な処理の流れは次のとおりです。

  • 入力:scanf() で数値を1つずつ読み込みます。
  • 終了条件:負の数が入力されると、output ラベルへジャンプして集計を終了します。
  • 初期化:最初に入力された値は、そのまま最大値(high)と最小値(low)として記録されます。
  • 比較と更新:2つ目以降の値は、現在の最大値・最小値と比較し、必要に応じて更新します。
  • 合計:入力された値を順次 sum に加算していきます。
  • 結果の出力:平均 = 合計 ÷ 個数、範囲 = 最大値 − 最小値 を計算して表示します。

なお、goto 文はプログラムの流れを読みにくくするため、実際の開発では while 文や for 文などのループ構造を使用することが一般的に推奨されています。

出力

上記のプログラムを実行すると、次のような出力が得られます。

数値を1行で入力し、最後に負の数を入力してください
22.4 56.8 12.3 48.6 31.4 19.0 -1
入力個数: 6
最大値: 56.799999
最小値: 12.300000
範囲: 44.500000
平均: 31.750000

補足:浮動小数点数の誤差について

出力結果で最大値が「56.799999」と表示されるのは、float 型が内部的に2進数で小数を近似して扱っているためです。「56.8」という10進数の値は2進数では正確に表現できず、微小な誤差が発生します。表示を見やすく整えたい場合は、printf の書式指定子を %.2f のようにして小数点以下の桁数を制限するとよいでしょう。


  1. sin(x)とcos(x)の値を計算するC++プログラムの解説

    sin(x)とcos(x)の値を計算するC++プログラム 本記事では、角度を入力として受け取り、その角度に対応するsin(x)(正弦)とcos(x)(余弦)の値を計算して結果を表示するC++プログラムを解説します。ライブラリ関数に頼らず、テイラー展開(マクローリン展開)を用いて数値を近似する手法を紹介します。 sin(x)とは sin(x)は三角関数の一つで、角度xに対する正弦の値を求めるために使用されます。直角三角形では、斜辺に対する対辺の比として定義されます。 $$\sin (x) = \displaystyle\sum\limits_{k=0}^\infty \frac{(-1)^{k

  2. Excelで範囲(レンジ)を計算する方法|MIN・MAX関数の使い方を解説

    統計学における「範囲(レンジ)」とは、データセットの最大値から最小値を引いて求める値のことです。データ内の値のばらつき(散らばり具合)を表す指標であり、変動性を測るのに役立ちます。範囲が大きいほど、データは広く散らばっており、変動が大きいことを意味します。幸い、Excelの関数を使えば、データの範囲はとても簡単に求められます。ここでは、その具体的な手順をご紹介します。ステップごとに解説!Excelで範囲を求める基本の手順Microsoft Excelで範囲を求める最も簡単な方法は、MIN関数とMAX関数を組み合わせることです。MAX関数はデータセットの中の最大値を返し、MIN関数は最小値を返し