24 Apr 2011

Array berdimensi dua

Operasi yang umumnya dilakukan menggunakan array adalah :
- Mengurutkan bilangan terbesar / terkecil (bubble sort)
- Seleksi data ( selection sort)
- Mengurutkan data dengan metode penyisipan(insertion sort)

Kali ini saya mencoba program mengurutkan data menggunakan metode "bubble sort".
metode pengurutan gelembung (bubble sort) mempunyai perilaku seperti gelembung di mana bila akan diurutkan naik, nilai yang besar akan naik (indeks besar) sementara nilai yang kecil akan turun (ke indeks yang kecil). Setiap data (data pertama) akan dibandingkan dengan data yang ada disebelahnya (dari data kedua sampai selesai). Bila data pertama lebih besar drai data yang sesudahnya, dilakukan penukaran tempat atau posisi data. demikian, sampai data tesebut berurut.
    Berikut contoh Algoritm pengurutan data "bubble sort"

  • Algoritma :     

                    Deklarasi :
                                larik = aray [1..100] of integer
                                i, a : byte
                                k    : larik
                                j, bantu : integer 
      
                    Deskripsi :
                    for i ß 1 to n-1 do
                    for j ß i+1 to n do
                    if x[i] > x[j] then // data sebelah kiri > kanan
        tukar(x[i], x[j])
        endif
                    endfor
                                endfor
  • Data Uji :        

  Data awal :
[8, 4, 7, 3, 1, 2, 6, 5]

  fase 1
[1, 8, 7, 4, 3, 2, 6, 5]

  fase 2
[1, 2, 8, 7, 4, 3, 6, 5]

  fase 3
[1, 2, 3, 8, 7, 4, 6, 5]

  fase 4
[1, 2, 3, 4, 8, 7, 6, 5]

  fase 5
[1, 2, 3, 4, 5, 8, 7, 6]

  fase 6
[1, 2, 3, 4, 5, 6, 8, 7]

  fase 7
[1, 2, 3, 4, 5, 6, 7, 8]

  fase 8
[1, 2, 3, 4, 5, 6, 7, 8]


  • Bahasa C++
#include <iostream.h>
#include <conio.h>

void main()
{
   int data[10];
   int i, j, tmp;
   cout<<"Program Mengurutkan Data"<<endl;
   cout<<"Dengan Metode Bubble Sort"<<endl;
   for(i=0; i<10; i++)
   {
       cout<<"Masukkan data ke "<<(i+1)<<" : ";
      cin>>data[i];
   }

   clrscr();
   cout<<"Data sebelum diurutkan : "<<endl;
   for(i=0; i<10; i++)
   {
       cout<<data[i]<<" ";
   }
   cout<<endl;
for(i=0; i<9; i++)
   {
       for(j=i+1; j<10; j++)
      {
          if(data[i]>data[j])
         {
             tmp = data[i];
            data[i] = data[j];
            data[j] = tmp;
         }
      }
   }

   cout<<"Data setelah diurutkan : "<<endl;
   for(i=0; i<10; i++)
   {
       cout<<data[i]<<" ";
   }
   getch();
}

Array


Macam -macam array :
Array berdimensi satu
Array berdimensi dua
Array berdimensi banyak

 Array berdimensi satu"
Array adalah kumpulan data bertipe sama yang menggunakan nama sama. Dengan mengggunakan array, sejumlah variabel dapat memakai nama yang sama. Antara satu variabel dengan variabel lain di dalam array dibedakan berdasarkan "subscript".
Sebuah subscript berupa bilangan di dalam kurung siku.
Melalui subscript inilah masing-masing elemen array dapat diakses.
Misalkan kita ingin membuat program untuk mencari nilai rata-rata dari 5 buah data nilai yang diinputkan. Pada program ini kita memerlukan 5 buah variabel yang berbeda-beda untuk menyimpan 5 buah nilai.
Contoh programnya sebagai berikut :

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

void main()
{
   float nilai[5];
   float jumlah, rata2;
   cout<<"Program Menghitung Nilai Rata-rata"<<endl;
   for(int i=0; i<5; i++)
   {
       cout<<"Masukkan nilai ke "<<(i+1)<<" : ";
       cin>>nilai[i];
   }
   jumlah = 0;
   for(int i=0; i<5; i++)
   {
       jumlah = jumlah + nilai[i];
   }
   rata2 = jumlah / 5;
   cout<<"Nilai rata-rata adalah "<<rata2<<endl;
   getch();
}

Rekursi

Fungsi dalam C++ dapat dipakai secara rekursi.
Artinya suatu fungsi dapat memanggil fungsi yang merupakan dirinya sendiri.
Contoh penerapan adalah untuk menghitung nilai perpangkatan : "xy"
Dimana y tsb adalah bilangan bulat positif
penyelasaian permasalahan di atas adalah :
    Jika y = 1      xy = x
    Jika tidak      xy = x * xy-1
#include <conio.h>

long int pangkat(int x, int y);

void main()
{
   int x, y;
   long int hasil;
   cout<<"Menghitung x^y"<<endl;
   cout<<"Input x : ";
   cin>>x;
   cout<<"Input y : ";
   cin>>y;
   hasil = pangkat(x, y);
   cout<<x<<"^"<<y<<" = "<<hasil;
   getch();
}

long int pangkat(int x, int n)
{
   if (n == 1)
      return(x);
   else
      return(x * pangkat(x, n-1));
}

Program C++ untuk menentukan bilangan ganjil atau bilangan genap

Untuk membuat program C++ yang menentukan bilangan ganjil atau bilangan genap, terlebih dahulu kita harus bisa membedakan bilangan

ganjil dan genap. Bil. Ganjil adalah Bilangan yang tidak habis dibagi dengan bilangan 2 atau sisa hasil baginya adalah 1. Contoh bilangan

ganjil adalah 1, 3, 5, 7, 9 dan seterusnya. Bil. Genap adalah Bilangan yang Habis dibagi 2 atau sisa hasil baginya adalah 0. Contoh bilangan

genap adalah 2, 4, 6, 8 dan seterusnya. Sebelum bisa menentukan bilangan ganjil dan genap, kita harus mengetahui operator sisa

pembagian (MOD) / modulus.

Operator sisa pembagian menghasilkan sisa hasil bagi, untuk lebih jelasnya lihat contoh berikut :
10 MOD 3 = 1
12 MOD 10 = 2
4 MOD 2 = 0
5 MOD 10 = 5

jadi, logika untuk menentukan bilangan genap adalah bilangan yang bisa dibagi dua, dalam arti bilangan genap adalah bilangan yang jika

dibagi (dengan MOD) dua (2) maka sisa hasil baginya sama dengan nol.
Sedangkan bilangan ganjil adalah sebaliknya, yaitu bilangan yang jika dibagi (MOD) dua (2) sisa hasil baginya sama dengan 1 (bukan 0).
Contoh :
4 MOD 2 = 0 berarti 4 adalah bilangan genap.
13 MOD 2 = 1 berarti 13 adalah bilangan ganjil.
8 MOD 2 = 0 berarti 8 adalah bilangan genap.
25 MOD 2 = 1 berarti 25 adalah bilangan ganjil.

Diatas sudah ada pengertian bil. genap dan bil. ganjil. Nah.. sekarang kita source codenya :

    #include <iostream.h>
    #include <conio.h>
    main()
    {
        clrscr();
        int bil, sisa;
        cout<<"Masukkan sebuah bilangan : ";
        cin>>bil;
        sisa = bil % 2;
        if(sisa == 0)
            cout<<bil<<" adalah bilangan genap"<<endl;
        else
            cout<<bil<<" adalah bilangan ganjil"<<endl;
        getch();
    }