合計と平均は、集計処理の基本中の基本です。多くのプログラムを作る際に必要になります。
今回は、連続した数や配列の合計・平均を求めてみることにします。
まず、合計を求めるには、合計結果を格納する変数(例えばsum)を用意して0で初期化します。
そして、ループの中で合計したいデータをsumに足し合わせていくことで、合計が求められます。
平均は、合計であるsumをデータ数で割れば求められますね。
下記は「1~10までの整数の合計と平均を求める」プログラムです。
合計・平均(C)
#include <stdio.h>
int main(void){
int i, sum;
float avg;
sum = 0;
for(i=1; i<=10; i++){
sum = sum + i;
}
avg = sum / 10.0;
printf("合計:%d ", sum);
printf("平均:%.1f\n", avg);
return 0;
}
合計・平均(Java)
public class SumAvg1 {
public static void main(String[] args) {
int sum;
double avg;
sum = 0;
for(int i=1; i<=10; i++){
sum = sum + i;
}
avg = sum / 10.0;
System.out.print("合計:" + sum + " ");
System.out.println("平均:" + avg);
}
}
実行結果
合計:55 平均:5.5
文法的なことですが、平均を計算している部分に注意してください。
CやJavaには明確な変数型があり、整数型同士の計算は整数型になるというルールがあります。
よって、計算結果が平均のような実数になる場合は、数そのものを実数にする(上記のように小数点を付ける)、または、
変数の型変換を行う((float)sum のようにする)ことを忘れないようにしてください。
avg = sum / 10 のようにすると、小数点が切り捨てられ、平均が5になってしまいます。
続いて、配列に入ったデータの平均を求めます。
配列は添え字が0から始まるので、カウンタ i の初期値が0になっていることに注意してください。
下記は「長さ10の1次元配列に格納された整数の合計と平均を求める」プログラムです。
配列の合計・平均(C)
#include <stdio.h>
#define NUM 10
int main(void){
int i, sum;
int a[] = {5,7,2,1,9,5,3,8,2,3};
float avg;
sum = 0;
for(i=0; i<NUM; i++){
sum = sum + a[i];
}
avg = (float)sum / NUM;
printf("合計:%d ", sum);
printf("平均:%.1f\n", avg);
return 0;
}
配列の合計・平均(Java)
public class SumAvg2 {
public static void main(String[] args) {
int sum;
int[] a = {5,7,2,1,9,5,3,8,2,3};
double avg;
sum = 0;
for(int i=0; i<a.length; i++){
sum = sum + a[i];
}
avg = (double)sum / a.length;
System.out.print("合計:" + sum + " ");
System.out.println("平均:" + avg);
}
}
実行結果
合計:45 平均:4.5
また文法的なことですが、for分の条件式部分がCとJavaで微妙に違っていますね。
Cのプログラムでは、define構文による定数を用いています。
Javaのプログラムでは、「.lenght」で配列の要素数を取得できるので、それを利用しています。
あなたもジンドゥーで無料ホームページを。 無料新規登録は https://jp.jimdo.com から