Kamis, 29 November 2012

Array pada c++


Array adalah variabel yang dapat menyimpan lebih dari satu nilai sejenis. Terdapat dua bagian penting yaitu elemen array yang merupakan nilai dan endeks array yang merupakan nilai urut untuk mengakses nilai pada array.
Deklarasi Array 1 Dimensi
tipe nama_var[max_data];
Contoh:
int a[5];
float x[100];
char nama[25];
.
dst.
Cara mengakses data bertipe array
nama_variabel[alamat]
Misal : Array a
27
23
35
46
87
à data yang tersimpan di array
0
1
2
3
4
à alamat array (dimulai dari 0)
a[0] = 27
a[1] = 23
.
.
a[4] = 87
Menginputkan data ke array
Data dapat diinputkan untuk setiap emelen array. Tetapi jika jumlah elemen array banayk, tentunya cara ini tidak efisien. Oleh karena itu dapat digunakan bantuan instruksi perulangan untuk input datanya.
Contoh 1:
#include <iostream.h>
#include <conio.h>
main() {
  int a[5];
  cout<<”Data ke 0 = “;cin>>a[0];
  cout<<”Data ke 1 = “;cin>>a[1];
  cout<<”Data ke 2 = “;cin>>a[2];
  cout<<”Data ke 3 = “;cin>>a[3];
  cout<<”Data ke 4 = “;cin>>a[4];
  int jumlah;
  jumlah=a[0]+a[1]+a[2]+a[3]+a[4];
  cout<<”\n\nJumlahnya = “<<jumlah;
  getch();
}
Contoh 2:
#include <iostream.h>
#include <conio.h>
main() {
  int a[5];
  int jumlah=0;
  for(int i=0;i<5;i++)
  { cout<<”Data ke “<<i<<” = “;cin>>a[i];
    jumlah+=a[i];
  }
  cout<<”\n\nJumlahnya = “<<jumlah;
  getch();
}
Tipe array juga dapat digabungkan dengan pointer. Untuk itu kita akan melakukan perubahan pada contoh 3 menjadi sebagai berikut:
Contoh 3:
#include <iostream.h>
#include <conio.h>
main() {
  int *a=new int[5];
  int jumlah=0;
  for(int i=0;i<5;i++)
  { cout<<”Data ke “<<i<<” = “;cin>>a[i];
    jumlah+=a[i];
  }
  cout<<”\n\nJumlahnya = “<<jumlah;
  getch();
}
Perhatikan contoh 3 diatas pada pengaksesan datanya. Jika array dideklarasikan sebagai pointer, maka untuk pengaksesan datanya cukup dituliskan sebagai array. Tetapi kita tetap bisa menuliskannya sebagai pointer tanpa harus menyertakan alamat arraynya. Jika demikian maka data akan diambilkan dari data pertama, atau data pada alamat ke 0.
Sehingga misalkan pada akhir program contoh 3 diatas kita tambahkan instruksi :
cout<<”\nData = “<<*a;
atau instuksi :
cout<<”\nData = “<<a[0];
akan mempunyai arti yang sama, data akan diambil dari data pertama (alamat 0).
Selain itu untuk input data dan proses penjumlahan, dapat juga dibuat dalam bentuk fungsi seperti pada contoh 4. Perhatikan pada saat tipe array menjadi parameter fungsi, jumlah data yang tersimpan dalam array boleh ditulis boleh tidak (optional). Sehingga bisa ditulis dengan : b[] saja
Contoh 4 :
#include <iostream.h>
#include <conio.h>
void input_array(int b[],int n)
{ for(int i=0;i<n;i++)
  { cout<<”Data ke “<<i<<” = “;cin>>b[i]; }
}
int jumlah(int b[],int n)
{ int hasil=0;
  for(int i=0;i<n;i++)
      hasil+=b[i];
  return hasil;
}
main() {
  int a[100];
  int bd;
  cout<<”Masukkan banyaknya data = “;cin>>bd;
  input_array(a,bd);
  cout<<”\n\nJumlahnya = “<<jumlah(a,bd);
  getch();
}
Penggunaan array 1D untuk sorting data
Pada proses berikut ingin akan diurutkan n data yang tersimpan di array dengan metode Bubble Sort.
Contoh 5:
#include <iostream.h>
#include <conio.h>
void masukan(int a[],int n)
{
  for(int i=0;i<n;i++)
  { cout<<”Data ke “<<i<<” = “;
      cin>>a[i];
      }
 }
void urutkan(int a[], int n)
{ int temp;
  for(int i=0;i<n;i++)
  for(int j=0;j<(n-i);j++)
  if (a[j]>a[j+1])
          {
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
            }
  }
void tampil(int a[], int n)
{
  for(int i=0;i<n;i++)
      cout<<a[i]<<”  “;
 }
main() {
  int a[100];
  int jml;
  cout<<”Banyak data = “;cin>>jml;
  masukan(a,jml);
  urutkan(a,jml);
  cout<<”\n\nSetelah diurutkan “;
  tampil(a,jml);
  getch();
}
Pada contoh program diatas ada tiga fungsi, fungsi pertama digunakan untuk menginputkan data ke dalam array, fungsi kedua untuk mengurutkan arraynya, dan fungsi ketiga untuk menampilkan data yang tersimpan di array ke layar.
Array 2 Dimensi
Contoh deklarasi :
int a[4][5];
0
1
2
3
0
25
40
26
12
1
6
8
12
5
2
1
3
8
9
3
15
22
13
19
4
0
5
7
15
Mengakses data :
a[0][0] = 25
a[0][1] = 40
.
.
dst
Penggunaan array 2D untuk menjumlahkan dua matrik
Matrik asal adalah a dan b, dijumlahkan dan hasilnya disimpan di matrik c. Syarat agar matrik dapat dijumlahkan adalah keduanya mempunyai ukuran yang sama.
Baris matrik 1 = Baris matrik 2
Kolom matrik 1 = Kolom matrik 2
Contoh 6:
#include <iostream.h>
#include <conio.h>
void masukan(int a[10][10],int b,int k)
{ for(int i=0;i<b;i++)
    for(int j=0;j<k;j++)
    {cout<<”Data ke “<<i<<j<<” = “;cin>>a[i][j]; }
}
void jumlah(int a1[][10],int a2[][10],int a3[][10],int b1,int k1)
{  for(int i=0;i<b1;i++)
    for(int j=0;j<k1;j++)
      a3[i][j]=a1[i][j]+a2[i][j];
}
void tampilkan(int a[10][10],int b,int k)
{ for(int i=0;i<b;i++)
   { for(int j=0;j<k;j++)
        cout<<a[i][j]<<”  “;
     cout<<”\n”;
    }
}
main() {
 int dt1[10][10],dt2[10][10],dt3[10][10];
 int b1,k1;
 cout<<”Jumlah baris matrik  = “;cin>>b1;
 cout<<”Jumlah kolom matrik  = “;cin>>k1;
 cout<<”\nMatrik pertama\n”;
 masukan(dt1,b1,k1);
 cout<<”\nMatrik kedua\n”;
 masukan(dt2,b1,k1);
 jumlah(dt1,dt2,dt3,b1,k1);
 clrscr();
 cout<<”\nMatrik pertama\n”;
 tampilkan(dt1,b1,k1);
 cout<<”\nMatrik kedua\n”;
 tampilkan(dt2,b1,k1);
 cout<<”\nMatrik hasil penjumlahan\n”;
 tampilkan(dt3,b1,k1);
 getch();
}
Perhatikan pada saat array 2D menjadi parameter fungsi, jumlah baris boleh ditulis boleh tidak, tetapi jumlah kolom harus ditulis.
Tipe array dapat dikembangkan menjadi array multidimensi. Misal 3D, 4D, dan sebagainya.

0 komentar:

Posting Komentar

 
- ,