Breaking News

Senin, 06 Juni 2016

Menghitung IPK C++

Menghitung IPK C++

Program menghitung ipk mahasiswa c++
  • Analisis
              1. Input yang akan digunakan disini adalah , menginputkan jumlah SKS dan Input nilai dalam bentuk huruf A-E.
              2. Outpunya akan menghasil nilai IPK berdasar SKS dan Nilai huruf yang telah di inputkan.
  • Algoritma
                     Procedure IPK (input/output matkul[50] ::char , jmk :: integer, bsks::integer)
                    Deklarasi
                         i -> integer
                         bnilai[100]->integer
                         mutu[100]->integer
                     Deskripsi
                           for(i=1;i<=jmk;i++):
                                read(matkul[i]);
                                    if (matkul[i]=='A') then bnilai[i]=4;
                                  else if (matkul[i]=='B') then bnilai[i]=3;
                                  else if (matkul[i]=='C') then bnilai[i]=2;
                                 else if (matkul[i]=='D') then bnilai[i]=1;
                                  else if (matkul[i]=='E') then bnilai[i]=0;
                                     endif
                               read(bsks[i]);
                                        if(bsks[i]>=1 && bsks[i]<=4) then bsks[i]= bsks[i];
                                        endif
                                     mutu[i]=bnilai[i]*bsks[i];
                                      endfor

                                  float tmutu=0, tbobot=0;
                                 for(z=1; z<=jmk; z++):
                                 tmutu+=mutu[z];
                                          tbobot+=bsks[z];
                                           endfor
                                    float ipk;
                                  ipk=tmutu/tbobot;
                                   write(ipk).

  • Source kode C++ :
#include<iostream>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
using namespace std;

int main(){
 int jmk, i, z;
 char npm[15], sem;
 int bsks[170], bnilai[170], total[170], mutu[170];
 char matkul[170], *cbsks[170];
 system ("cls");
 cout<<"=== Hitung IPK Teknik Informatika ===\n\n";
 cout<<"Masukkan NIM: "; cin>>npm;
 cout<<"Anda Sekarang Semester: "; cin>>sem;
 cout<<"Masukkan Jumlah Mata Kuliah: "; cin>>jmk;
 cout<<"===================================\n\n";
 cout<<"Masukkan Nilai Anda [A..E]\n";
 for(i=1; i<=jmk; i++){
  kondisi:
  cout<<"Mata kuliah ke "<<i<<" : "; cin>>matkul[i];
  if(matkul[i]=='a' || matkul[i]=='A'){
   bnilai[i]=4;
   }
  else if(matkul[i]=='b' || matkul[i]=='B'){
   bnilai[i]=3;
   }
  else if(matkul[i]=='c' || matkul[i]=='C'){
   bnilai[i]=2;
   }
  else if(matkul[i]=='d' || matkul[i]=='D'){
   bnilai[i]=1;
   }
  else if(matkul[i]=='e' || matkul[i]=='E'){
   bnilai[i]=0;
   }
  else{
   cout<<"Masukkan HANYA A,B,C,D,E!!\n";
   goto kondisi;
   }
  kond:
  cout<<"Bobot SKS [1..4]: "; cin>>bsks[i];
  if(bsks[i]>=1 && bsks[i]<=4){
   bsks[i]=bsks[i];
   }
  else{
   cout<<"Masukkan HANYA Angka 1-4!!\n";
   goto kond;
   }
  mutu[i]=bnilai[i]*bsks[i];
  }
 cout<<"\n\nHASIL\n";
 float tmutu=0, tbobot=0;
 for(z=1; z<=jmk; z++){
  tmutu+=mutu[z];
  tbobot+=bsks[z];
  }
 float ipk;
 ipk=tmutu/tbobot;
 cout<<"========================\n";
 cout<<"\nNPM: "<<npm;
 cout<<"\nSemester: "<<sem;
 cout<<"\nJumlah Mata Kuliah: "<<jmk;
 cout<<"\nTotal Mutu: "<<tmutu;
 cout<<"\nTotal SKS: "<<tbobot;
 cout<<"\nTotal IPK: "<<ipk;
 cout<<"\n\n========================";
 getch();
 return 0;
 }


Output :



#reflexsi pertemuan ke12

Materi minggu ini tentang record, pembahasan tentang beda record dan array, record adalah suatu rekaman disusun oleh beberapa field,sedangkan array adalah tipe data yang terstruktur dimana didalamnya terdapat komponen-komponen tipe data yang sama. dan beda struct dan class.
bedanya struct dan class yaitu kalo class adalah sesuatu yang mempunyai data (sifat) dan fungsi untuk mendeskripsikan suatu ojek sedangkan struct adalah tipe data yang memberi tau pada c++ untuk mengkoleksi tipe data dasar sebagai satu kesatuan tipe data.

#reflexsi pertemuan ke 11

Refleksi ALPRO Minggu ke #11



Selasa,24 Mei 2016 Jam 07.00 WIB adalah perkuliahan ALPRO minggu ke-11 yaitu membahas materi tentang : ARRAY 2 DIMENSI.  juga menjelaskan tentang MATRIK dan VEKTOR .

#REFLEXSI 10

Hari selasa tanggal 17 Mei 2016 Jam 07.00 WIB kembali lagi ke matkul ALPRO minggu ke-10 kita belajar tentang : SEARCHING.menjelaskan materi SEARCHING yang didalmnya terdapat Linear Search & Binary Search dengan 6 kaidah/langkah. Kita diberikan tugas menggunakan langkah 6 kaidah tersebut dikumpul jam 09.00 WIB.

#Perkalian Matriks dan Vektor

Perkalian Matriks dan Vektor



 Program ini menggunakan  6 tahap :
1.Masalah :
Mengalihkan  Matriks dan vector
Analisis :
Syarat dari cara mengalihkan matriks dan vector yaitu ada baris dan kolom yang sama jumlahnya. Misalkan matriks berordo 2x3 maka vektornya  3x1 ,artinya itu matriks 2 baris 3 kolom dan vector  3 kolom  1 baris. Matrik dan vector bisa di kalikan karena mempunyai salah satu baris atau kolom yang sama.

2.Menentukan Input dan Output :
Matriks : | 2 3 3|
|1 4 2 |
Vektor : | 2 |
   | 3 |
   | 2 |
Hasil Output:  | 19 | dan | 18 |
 


3.Algoritma :

Deklarasi :
I,j,k : integer
Jumlah[10][8] : array
Deskripsi :
For i <--0 to 2 do
For i <--0 to 1 do
Jumlah[i][j]=0
For k ß0 to 3 do
Jumlah[i][j]=jumlah[i][j]+A[i][k]*B[k][j]
Cetak(jumlah[i][j])
Endfor
                Endfor
                                Endfor
4.Program C++ :
#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
void matrik(int A[2][3],int B[3][1]){
    int i,j,k,jumlah[10][8];
    for(i=0;i<2;i++){
            for(j=0;j<1;j++){
                //cout<<A[i][j]<<endl;
                jumlah[i][j]=0;
                for(k=0;k<3;k++)
                jumlah[i][j]=jumlah[i][j]+A[i][k]*B[k][j];
                cout<<jumlah[i][j]<<endl;
            }
    }
}
int main(int argc, char** argv) {
    int A[2][3]={2,3,3,1,4,2};
    int B[3][1]={2,3,2};
    matrik(A,B);
    return 0;
}

Senin, 16 Mei 2016

kasus bab 9

untuk kasus bab 9 saya coba membuka dari link klas saya  klik disini

sorting

sorting

1 selection short   klik disini
2.buble short klik disini
3.insertion short
untuk refrensi klik disini

mengurutkan data dengan insertion short

problem:menenentukan angka agar bisa terurut
Menganilisis



1. untuk data pertama masukan ke indek pertama sebagai acuan berikutnya


2. masukkan input, cek nilai diurutkan dari depan apakah ada nilai yang lebih besar dari yang diinputkan maka catat posisinya dan geser posisi tersebut dan setelahnya. kemudian sisipkan inputan tersebut di posisi yang dicatat.


3. ulangi langkah kedua sampai selesai inputnya.


algoritma:
  procedure insertion _short(input/output data:larik :input n:integer)
deklarasi a,b,temp:integer
deskripsi for a<..2 to  n do
temp:=data [b+i];
b:a-1;
while(temp>=data[a]and (a>1)do
data [a+1]:=temp
else
data[a+1]:=data [a]  ;
data[a]:=temp;
end if
end for 




 




Raptor









Sourc code C++

#include <iostream>
#include <string>
#include <conio.h>
using namespace std;

void sort (int a[],int i)
{
 int j;
 int temp;
 int langkah;

 temp=0;
 i=0;
 langkah=0;
 while(i<8)
 {
  j=i+1;
  while (j<8)
  {
   if (a[i]>a[j])
   {
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
   }
   else
  {
  }
 j=j+1;
}
i=i+1;
while (langkah<9)
{
 cout<<a[langkah]<<" , ";
 langkah = langkah+1;
}
cout<<" "<<endl;
langkah=0;
}
cout<<endl;
cout<<"Hasil pengurutan = ";
i=0;
while(i<8)
{
 cout<<a[i]<<" , ";
 i=i+1;
}
}
int main()
{
 int i=0;
 int a[8];
 while (i<8)
 {
  {
   cout<<"Masukkan nilai ke- "<<i<<" = ";
   // cout <<endl;
   cin>>a[i];
   i=i+1;
  }
 }
sort(a,i);
getch();
 return 0;
}

reflexsi pertemuan 9

pada pertemuan ini membahas tentang sorting..dan pada pertemuan kali ini bpk wahyu hilang moods karna kesalahan kami kurang memahami materi

Jumat, 06 Mei 2016

Mengurutkan data [2 8 7 1 3 5 6 4] menggunakan Quick Sort

Mengurutkan data [2 8 7 1 3 5 6 4] menggunakan Quick Sort, agar elemen berada paling depan (urutan pertama), semakin ke belakang semakin besar



 

Mengurutkan kumpulan data [ 2 8 3 5 6 4 11 1 9 ]

Mengurutkan kumpulan data [ 2 8 3 5 6 4 11 1 9 ] menggunakan quick sort serta menggambarkan step by step dari sorting

 



mengurutkan data

Mengurutkan data [8 1 4 9 7 3 5 2 7] memaka iMerge sort, agar elemen terkecil berada paling depan, semakin ke belakang semakin besar

klik disini 

melakukan sorting

Melakukan sorting dari data 32 12 5 18 31 4 25 7 || [0] [1] [2] [3] [4] [5] [6] [7] dalam array tersebut menggunakan merge sort sehingga nomor paling kecil berada paling depan samapai yang paling besar berada paling belakang

klik disini 

mengurutkan deret angka

Mengurutkan deret angka 5 2 4 6 1 3 dari yang paling kecil sampai paling besar menggunakan insertion sort

 klik disini

mengurutkan deret angka

Mengurutkan deret angka 21 16 25 8 19 4 1 dengan selection sort

silahkan klik disini 

periksa daftar 6 angka

Periksalah daftar 6 angka 14 32 5 12 61 7 Ketika Anda melihat daftar tersebut, Anda segera dapat melihat bahwa 5 adalah angka terkecil didaftar menemukan nilai minimum tersebut

halaman 419

Analisis :
                You will need separate arrays to hold the revenue table, the unit totals (row sums)
                and the hospital quarterly totals (column sums).
Algoritma :
  Deklarasi :
             I, j, max, temp : integer
  Deskripsi :
            Max <--- Input
            for (i=1;i<=max;i++)then
            write("Masukkan Data Ke- 'I'")
            for(i=1;i<=max;i++)then
            write('data[1]')
            for(i=1;i<=max;i++)then
            for(j=1;j<=max;j++)then
            if(data[i]>data[j])then
            write('temp=data[i])
            data[i] <--- data[j];
            data[j] <--- temp;
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv) {
    int i, j, max, temp;
    int data[10];
    
    cout<<"\t\t\t++++ Summary of Hospital Revenue ++++"<<endl<<endl;
    cout<<"Masukkan Banyak Data : ";
    cin>>max;
    for(i=1;i<=max;i++){
        cout<<"\nMasukkan Data Ke-"<<i<<" ; ";
        cin>>data[i];
        }
    cout<<"\nData Awal : ";
    for(i=1;i<=max;i++){
        cout<<data[i]<<" ";
    }
    for(i=1;i<=max;i++){
        for(j=1;j<=max;j++){
        if(data[i]>data[j]){
            temp=data[i];
            data[i]=data[j];
            data[j]=temp;
        }
    }
}    
    return 0;
}

refleksi ke 8

pada pertemuan ke 8 kami dihadpakan dengan pertanyaan yg mungkin diluar dugaan saya.karena ttidak ngerti ditanya mw jawab ap

tugas rencana kuliah no 1,2,3

latiha no 1(mengeser elemen array) silahkan klik disini

latihan no 2(mencari mean(klik disini),median(klik disini),modus(klik disini),mencari maksimal dan minimum(klik disini)

3.menghilangkan data yang diinputkan..
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;


class Array1D{
 friend ostream& operator<<(ostream&, const Array1D&);
 friend istream& operator>>(istream&, Array1D&);
public:
 Array1D();
 void cetak();
 void geser_kiri();
 void geser_kanan();
 void hapus_elemen();

private:
 char A[5];
 int posisi;
};

Array1D::Array1D(){
 for(int i=0;i<5;i++)
 A[i]='O';
}

void Array1D::cetak(){
 for(int i=0;i<5;i++)
 cout<<A[i]<<" ";
}

ostream& operator<<(ostream& out, const Array1D& x){
 for(int i=0;i<5;i++)
 out<<x.A[i]<<" ";
 out<<endl;
 return out;
}

istream& operator>>(istream& in, Array1D& x){
 int posisi;
 for (int posisi=1; posisi<=5; posisi++){
 cout<<"\nMasukkan Nilai Array Posisi Ke- : ";
 in>>x.posisi;
 if(posisi >= 0 && posisi <= 5){cout<<"Masukkan Elemen Array : ";
 in>>x.A[posisi-1];
 }
 }
 return in;
}

void Array1D::geser_kanan(){
 int n=5;
 int temp=A[n-1];
 for(int i=n-1;i>=0;i--)
 A[i+1]=A[i];
 A[0]=temp;
}

void Array1D::geser_kiri(){
 int n=5;
 int temp=A[0];
 for(int i=0;i<n;i++)
 A[i]=A[i+1];
 A[n-1]=temp;
}

void Array1D::hapus_elemen(){
 int posisi;
 cout<<"Pilih Indeks Berapa Yangg akan Di Hapus : ";
 cin>>posisi;
 if(posisi>0 && posisi<=5)
 A[posisi-1]='O';
 else cout<<"Indeks yang Anda Masuukan Salah Karena Indek Hanya Terdiri Dari 1 - 5\n";
}

int main(int argc, char *argv[]){
 Array1D x;
 cout<<"\t\t\tArray Masih Kosong : "<<x;
 cin>>x;

 cout<<"\nIsi Array Saat ini : "<<x;
 x.geser_kiri();
 cout<<"Isi Array Setelah di Geser Kiri  : "<<x;
 x.geser_kanan();
 cout<<"Isi Array Setelah di Geser Kanan : "<<x;
 cout<<"\nUrutan Elemen Pada Indeksnya Saat ini  : "<<x;
 x.hapus_elemen();
 cout<<"\nSetelah dihapus Menjadi : "<<x;

 system("PAUSE");

    return 0;
}

Sabtu, 16 April 2016

# Menghitung kata dalam sebuah kalimat

oke lanjut lagi membahas cara menghitung kata ke dalam sebuah kalimat..maka saya akan sambungkn kembali ke blogs tmen saya klikdisini

#String Bergantian huruf besar dan kecil


#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
int main()
{
int i,jum;

char string[100];

cout<<"Masukan sembarang kalimat:\n";
cin.getline(string,100); //membaca spasi

//mengubah huruf awal menjadi huruf kapital
if((string[0]>='a')&& (string[0]<='z'))
string[0]=(char)string[0]-32;


//mengubah huruf setelah huruf awal menjadi huruf kecil
jum=1;int d=0;
for(i=0;i<(int)strlen(string);i++)
{
    if(i%2==0){
 
if((string[jum]>='A')&& (string[jum]<='Z'))
string[jum]=(char)string[jum]+32;
jum++;}
}

//mengubah huruf setelah spasi menjadi huruf kapital
for(i=1;string[i]!='\0';i++)
{
    if(string[i]==' ') d++;
if((i-1-d)%2==0)
{
if(string[i+1]>='a' && string[i+1]<='z')
string[i+1]=(char)(string[i+1]-32);
}
}


cout<<"Hasil Akhir : "<<string<<endl;
getch();
}

#Program Penyisipan kata

oke gan untuk bab program penyisipan data saya akan menyambungkan dengan link temen saya
klikdisini

# Kasus 6.6 : Algoritma untuk mengecek apakah suatu kata atau kalimat merupakan palindrom atau tidak.



Algoritma untuk mengecek apakah suatu kata atau kalimat merupakan palindrom atau tidak.Analisis 

Misalnya kata yang akan dicek adalah “kasur rusak”. Maka huruf pertama dicek, apakah sama dengan huruf pertama terakhir atau tidak, (sampai dengan pertengahan kalimat). Bila pengecekan selalu sama maka kalimat tersebut adalah palindrom. Jika terdapat satu huruf saja yang tidak sama, kalimat tersebut bukanlah palindro.

#include <iostream>
#include <string.h>
#include <conio.h>

using namespace std;

class Palindrom {
friend ostream& operator<<(ostream&, Palindrom&);
friend istream& operator>>(istream&, Palindrom&);
public:
int cek_palindrom();
private:
char *s;
};

ostream& operator<<(ostream& out, Palindrom& a) {
if (a.cek_palindrom())
cout << a.s << " adalah palindrom";
else out << a.s << " bukan palindrom";
return out;
};


istream& operator>>(istream& in, Palindrom& a) {
cout << "Masukkan sebuah kalimat : ";
cin >> a.s;
return in;
};

int Palindrom::cek_palindrom()
{ int i, pj;
pj = strlen(s);
for (i=0; i<=pj/2 ;i++)
if (s[i] != s[pj-i-1]) return 0;
return 1;
}

main() {
Palindrom kata;
cin >> kata;
cout << kata;
getch();
return 0;
}




# kasus 6.5 Modus dari n buah data berupa bilangan bulat (data antara 1 sampai dengan 10)


Kasus 6.5

 Analisis : 
         Modus adalah bilangan (data) yang paling sering muncul. Dengan kata lain, frekuensi data terbesarlah yang dicari.

         Langkah penyelesaian masalahnya adalah :

        setiap jenis data dihitung frekuensi kemunculannya

        dari frekuensi-frekuensi tersebut dicari frekuensi terbesarnya

#include <iostream>
#include <math.h>

using namespace std;

class HitungStatistik {
friend ostream& operator<<(ostream&, HitungStatistik&);
friend istream& operator>>(istream&, HitungStatistik&);
public:
HitungStatistik();
void hitung_modus();
private:
void maksimum();
void frekuensi();
int maks, item;
int n; 
int A[20]; 
int f[11]; 
};

HitungStatistik::HitungStatistik()
{ for (int i=0; i<20; i++) f[i] = 0; }

istream& operator>>(istream& in, HitungStatistik& a) {
cout << "Banyaknya data : ";
cin >> a.n;
for (int i = 0; i < a.n; i++) {
cout << "Data ke- : " << i+1 << " > ";
cin >> a.A[i];
}
return in;
}

void HitungStatistik::maksimum()
{
maks = f[0];
item = 1;
for (int i=0; i<n; i++)
if (f[i] > maks) {
maks = f[i];
item = i;
}
cout << "Modus = " << item;
}

void HitungStatistik::frekuensi()
{
for (int i=1; i<n; i++) ++f[A[i]];
}

void HitungStatistik::hitung_modus() {
cout << "Frekuensi running\n";
frekuensi();
maksimum();
}

ostream& operator<<(ostream& out, HitungStatistik& a) {
cout << "Mulai ...\n";
a.hitung_modus();
cout << "Nilai modus : " << a.item;
return out;
}

main() {
HitungStatistik run;
cin >> run;
cout << run;
return 0;
}











 

#Kasus 6.4 Algoritma untuk menentukan nilai maksimum dan minimum dari n bilangan.




#include <iostream>
#include <cstdlib>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;

class maxmin
  {     
   public:            
          maxmin();            
          int proses(int n,int max,int min,int jumlah);        
   private:             
          int n, max, min, jumlah, x;
  };

maxmin::maxmin()
{
  cout<<"\tMenampilkan Maximum, Minimum, dan Jumlah Sejumlah n Bilangan "<<endl;
  cout<<endl;
}

int maxmin::proses(int n, int max, int min, int jumlah)
{
if(n==0){
   cout<<endl;
   cout<<" NILAI MAKSIMUM       : "<<max<<endl;
   cout<<" NILAI MINIMUM        : "<<min<<endl;
   cout<<" JUMLAH SELURUH DERET : "<<jumlah<<endl<<endl;
   return 0;
  }   

else{
   cout<<" Masukkan Bilangan : ";cin>>x;
      jumlah+=x;

   if(x<min)
   {
      min=x;
   }        

   if(x>max)
   {
      max=x;
   }
    return proses(n-1,max,min,jumlah);
 }   
}

int main(int argc, char *argv[]){
    maxmin x;
    x.proses(5,1,1,0);
   
    system("PAUSE");
   
    return EXIT_SUCCESS;
}



#Kasus 6.3 Algoritma untuk menentukan nilai maksimum dari n bilangan


.



#include <iostream>
#include <math.h>

using namespace std;

class HitungStatistik {
friend ostream& operator<<(ostream&, HitungStatistik&);
friend istream& operator>>(istream&, HitungStatistik&);
public:
int maksimum();
private:
int maksimum2(int, int);
int n;
int A[20];
};

istream& operator>>(istream& in, HitungStatistik& a)
{
cout << "Banyaknya data : ";
cin >> a.n;
for (int i = 0; i < a.n; i++)
{
cout << "Data ke- : " << i+1 << " > ";
cin >> a.A[i];
}
return in;
}

int HitungStatistik::maksimum2(int a, int b)
{ if (a>b) return(a);
else return(b);
}

int HitungStatistik::maksimum()
{ int temp = A[0];
for (int i = 1; i<n; i++)
temp = maksimum2(temp, A[i]);
return(temp);
}

ostream& operator<<(ostream& out, HitungStatistik& a) {
cout << "Nilai terbesar: " << a.maksimum();
return out;
}

main() {
HitungStatistik run;
cin >> run;
cout << run;
return 0;
}



#Kasus 6.2 Nilai deviasi standar dari n buah data.




Nilai deviasi standar  dari n buah data
Analisis :
         Rumus deviasi standar adalah :
         Terlihat bahwa nilai rata-rata dan datanya digunakan kembali. 


#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;

class HitungStatistik {
friend ostream& operator<<(ostream&, HitungStatistik&);
friend istream& operator>>(istream&, HitungStatistik&);
public:
float rata();
float STD();
private:
long sqrt(int n) { return(n*n); }
int n;
int A[20];
};

istream& operator>>(istream& in, HitungStatistik& a)
{
cout << "Banyaknya data : ";
cin >> a.n;
for (int i = 0; i < a.n; i++)
{
cout << "Masukkan data ke- : " << i+1 << " > ";
cin >> a.A[i];
}
return in;
}

float HitungStatistik::rata()
{
float total=0;
for (int i = 0; i<n; i++) total = total + A[i];
return(total/n);
}

float HitungStatistik::STD ()
{ float rerata = rata();
float jumlah=0.0;
for (int i = 0; i<n; i++)
jumlah = jumlah + sqrt(A[i] - rerata);
return(sqrt (jumlah/(n-1)));
}

ostream& operator<<(ostream& out, HitungStatistik& a) {
cout << "Rata-rata dari " << a.n;
cout<< " bilangan adalah : " << a.rata() << endl;
cout << "Standar deviasi= " << a.STD();
return out;
}

int main() {
HitungStatistik run;
cin >> run;
cout << run;
return 0;
}

#kasus 6.1


Kasus 6.1 Rata-rata dari n bilangan bulat dengan menggunakan array.

Algoritma :











#include <iostream>
#include <cstdlib>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;

class HitungRATA {
friend ostream& operator<<(ostream&, HitungRATA&);
friend istream& operator>>(istream&, HitungRATA&);
public:
float rata();
private:
int n;
int A[20];
};

istream& operator>>(istream& in, HitungRATA& a) {
cout << "Banyaknya data : ";
in >> a.n;
for (int i = 0; i < a.n; i++) {
cout << "Masukkan data ke- : " << i+1 << " > ";
cin >> a.A[i];
}
return in;
}

float HitungRATA::rata() {
float total=0;
for (int i = 0; i<n; i++) total = total + A[i];
return(total/n);
}

ostream& operator<<(ostream& out, HitungRATA& a) {
cout << "Rata-rata dari " << a.n;
cout << " bilangan adalah : "<< a.rata();
return out;
}

main() {
HitungRATA run;
cin >> run;
cout << run;
return 0;
 }