Total dan Rata-Rata

Saya akan memberi contoh kode program untuk mencari total(sum) dan rata-rata (average). Saya membahasnya bersamaan karena rata-rata dan total adalah dua hal yang berhubungan. Untuk mencari rata-rata, yang harus dicari adalah total nilai dari datanya. Setelah total didapatkan, selanjutnya kalian bisa membagi total dengan banyaknya data untuk mendapatkan rata-rata.

Function untuk mencari total nilai hanya perlu perulangan. Parameternya berupa array dan banyaknya isi array. Di bawah ini saya membuat function untuk menghitung total dari nilai-nilai yang disimpan di dalam array.

float sum(float *data, int jdata){
    float total=0;
	
    for(int i=0;i<jdata;i++){
        total+=data[i];
    }
    return total;
}

Kalian bisa memanggil function tersebut dari function utama untuk mendapatkan total. Setelah totalnya didapat, kalian bisa membagi total dengan banyaknya data untuk mendapatkan rata-ratanya. Kalau memang diperlukan, kalian bisa membuat function untuk menghitung rata-rata.

float average(dataku data, int jdata){
    return sum(data, jdata)/jdata;
}

Sebelum menghitung total maupun rata-rata, kalian perlu mendapatkan datanya terlebih dahulu. Jumlah data bisa diserahkan pada pengguna atau kalian batasi sendiri. Saya memisahkan function untuk mendapatkan datanya agar program lebih teratur.

int dapatkan_data(float *data){
    int jdata=0;
    
    printf("Banyaknya data : ");
    scanf("%d", &jdata);
    if(jdata < 100)
        for(int i=0;i<jdata;i++){
	    printf("Data ke-%d : ", i+1);
	    scanf("%f", &data[i]);
        }
    return jdata;
}

Program utuhnya bisa kalian lihat di bawah ini.

#include <stdio.h>

typedef float* dataku;

float sum(dataku data, int jdata){
    int total=0;
	
    for(int i=0;i<jdata;i++){
        total+=data[i];
    }
    return total;
}

float average(dataku data, int jdata){
    return sum(data, jdata)/jdata;
}

int dapatkan_data(dataku data){
    int jdata=0;
    
    printf("Banyaknya data : ");
    scanf("%d", &jdata);
    if(jdata < 100)
    for(int i=0;i<jdata;i++){
        printf("Data ke-%d : ", i+1);
        scanf("%f", &data[i]);
    }
    return jdata;
}

int main(){
    float tdata[100];
    int jdata=0;
	
    jdata=dapatkan_data(tdata);
    printf ("Total : %.2f\n", sum(tdata, jdata));
    printf ("Rata-Rata : %.2f", average(tdata, jdata));
    return 0;
}
Contoh :
Banyaknya data : 5
Data ke-1 : 87
Data ke-2 : 88
Data ke-3 : 89
Data ke-4 : 90
Data ke-5 : 91
Total : 445.00
Rata-Rata : 89.00

Contoh kode program di atas bisa digunakan untuk Bahasa C maupun C++. 

Versi C++

Kalau kalian pakai bahasa C++, kalian bisa mengganti printf, scanf, dan stdio dengan cout, int, dan iostream. Kalian juga bisa mengemas function sebagai method dari class.
#include <iostream>

using namespace std;

class dataku{
    private :
        float data[100];
        int jdata;
    public :
        float sum();
        float average();
        void dapatkan_data();
        dataku(){
        	jdata=0;
        };
};

float dataku::sum(){
    int total=0;
	
    for(int i=0;i<jdata;i++){
        total+=data[i];
    }
    return total;
}

float dataku::average(){
    return sum()/jdata;
}

void dataku::dapatkan_data(){
    this->jdata=0;
    
    cout << "Banyaknya data : ";
    cin >> this->jdata;
    if(this->jdata < 100)
    for(int i=0;i<this->jdata;i++){
        cout << "Data ke- " << i+1 << " : ";
        cin >> data[i];
    }
}

int main(){
    int a[100];
    int jdata=0;
    dataku tdata;
	
    tdata.dapatkan_data();
    cout << "Total : ";
    cout << tdata.sum() << endl;
    cout << "Rata-Rata : ";
    cout << tdata.average() << endl;
    return 0;
}

Array dan jumlah data yang sudah dikemas di dalam class tidak perlu dimasukkan ke parameter method, kecuali memang benar-benar dibutuhkan. Kalau kalian masih memasukkan atribut class ke dalam parameter method, kalian mungkin belum cukup paham dengan OOP.

Versi Pascal

Saya cuma akan memberikan contoh yang tidak menggunakan OOP. Kalau kalian ingin membuat kode untuk bahasa pascal dengan OOP, kalian mungkin bisa membuatnya sendiri.

uses crt;

type dataku=array[1..100] of real;

var tdata : dataku;
    jdata:integer=0;

function sum(var data:dataku;jdata:Integer):real;
var total:real=0;
    i:Integer;
begin
	
    for i:=1 to jdata do
        total+=data[i];
    sum:=total;
end;

function average(var data:dataku;jdata:Integer):real;
begin
    average:=sum(data, jdata)/jdata;
end;

function dapatkan_data(var data:dataku):Integer;
var jdata:integer=0;
    i:Integer;
begin
    writeln('Banyaknya data : ');
    readln(jdata);
    if(jdata < 100)then
    for i:=1 to jdata do
    begin
        write('Data ke-', i, ' : ');
        readln(data[i]);
    end;
    dapatkan_data:=jdata;
end;

begin
    clrscr;
    jdata:=dapatkan_data(tdata);
    writeln('Total : ', sum(tdata, jdata):0:2);
    writeln('Rata-Rata : ', average(tdata, jdata):0:2);
    readln;
end.

Kalau ada yang hasilnya tidak sesuai, kalian bisa coba download source codenya di sini.