[SHARE C++] Membuat Array Dinamis Menggunakan Pointer
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(); }
Mari Gabung
Halo
, Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.