Anda di sini

Pemrograman

[SHARE C++] Membuat Array Dinamis Menggunakan Pointer

Aditya Suranata - 31 Oktober 2015 18:22:10 0

Membuat array dengan jumlah fixed terkadang menjadi masalah pada khasus pemrosesan data berskala besar, sebagai contoh, biasanya akan dialami 2 hal berikut :

1. Melampaui batas maksimum

int data[999999];

Mendeklarasikan jumlah maksimum yang tepat sering tidak mungkin karena programmer tidak memiliki kontrol atas ukuran data set pada array, asumsi jumlah maksimal pada array yang tidak akan mungkin dilampaui oleh pengguna adalah sumber bug terbesar pada pemrograman. Mendeklarasikan array yang sangat besar juga sangat boros memori, dan jika array terlalu banyak, biasanya akan membuat program tidak berjalan di beberapa sistem.

2. Tidak ada expansi

int dara[9];

Berbeda dengan mendeklarasikan array dengan asumsi maksimum, mendeklarasikan array dengan ukuran kecil memang akan menghemat memory dan sumber daya, namun hal itu akan mencegah program kita untuk berjalan dengan data set besar. Jika batasan array tidak diperiksa, data set yang besar akan berjalan di ujung sebuah array dengan konsekuensi kesalahan yang besar pula. Array ukuran fixed tidak dapat dimodifikasi sesuai kebutuhan.

Jadi untuk mencegah hal tersebut kita bisa menggunakan bantuan pointer untuk menentukan jumlah array secara dinamis, sebagai contoh agar dapat dimengerti bisa dilihat pada contoh program berikut :

//Aplikasi penghitung total bilangan genap, ganjil,
//jumlah seluruh dan rata-rata dari deret bilangan.
//Dev. Info I Wayan Aditya Suranata - 110010129 - AD111
   
   
//deklarasi header
#include <iostream>
#include <conio>
#include <iomanip> //untuk menentukan jml digit pada bilangan float
   
//fungsi penghitung rata-rata
float f_rata(float batas, float total)
    { float hasil;
    hasil = total / batas;
      return hasil;
    }
       
void main ()
{
int* data = NULL;  //pointer untuk membuat array dimamis
int max;
data = new int[max];
cout<<"Masukan batas maximal : ";cin>>max;  //get maximal deret bilangand dari user
cout<<endl;
for (int i=0;i<max;i++)
    {
   cout<<"Masukan bilangan ke "<<i<<" : ";cin>>data[i];    //minta masukan dari user dan input ke array
   }
   cout<<endl;
   cout<<"Bilangan yang anda inputkan : ";  //print bilangan yang dimasukan user
for (int i=0;i<max;i++)
    {
    cout<<data[i]<<" ";
   }
//jumlah bilangan genap & ganjil
int tampung_genap = 0;
int tampung_ganjil = 0;
for (int i=0;i<max;i++)
   {
   if ((data[i]%2)==0)
    {
      tampung_genap += data[i];
      }
    else tampung_ganjil += data[i];
   }
   
int tampung_total = tampung_genap + tampung_ganjil;  //hitung total jumlah bilangan
cout<<endl;
cout<<"Total bilangan genap adalah : "<<tampung_genap<<endl;  //print total bilangan genap
cout<<"Total bilangan ganjil adalah : "<<tampung_ganjil<<endl;  //print total bilanga ganjil
cout<<"Total seluruh bilangan adalah : "<<tampung_total<<endl;  //print total jumlah semua bilangan
cout<<"Rata-rata dari seluruh bilangan : "<<setprecision(3)<<f_rata(max,tampung_total)<<endl; //print rata-rata
getch();
}

5.908
Image

Aditya Suranata

Aditya suka menulis, bukan hanya sekedar hobi, menulis menjadi medianya untuk mencurahkan pikiran dan perasaan. Di TutorKeren.com kebanyakan menyumbang tulisan sesuai dengan minat dan keahliannya yaitu pada kategori pemrograman dan elektronika. Selain itu juga gemar menulis mengenai hal-hal umum, seperti ilmu alam, sosial dan beberapa pengalamannya yang mungkin bisa berguna untuk orang lain.

Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.