Minggu, 15 Mei 2016

algoritma sorting

sorting C++

#selection sort

halo guys,, apa kabarr ni ??/,, gimana masih terus coding meskipun banyak tugas, dan selalau dalam tekanan tugas hahahaha,,, tenang tenang kita masih terus berjuang ya meskipun banyak halangan dan rintangan serta pengorbanan yang harus kita hadapii,,,,
kali ini mimin akan berbagi program sorting pada C++
 SORTING
apa itu sorting ?
          Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu proses sorting: 


1. Urut naik (ascending)
   Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar

2. Urut turun (descending)
   Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.

Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi. Selain itu, dengan mengurutkan data maka kita semakin mudah untuk menyisipkan data atapun melakukan penggabungan data.
Metode-metode sorting meliputi:

1. Insertion Sort (Metode Penyisipan)
2. Selection Sort (Metode Seleksi)
3. Bubble sort(Metode Gelembung)
4. Shell Sort (Metode Shell)
5. Quick Sort (Metode Quick)
6. Merge Sort (Metode Penggabungan) 


Analisis kasus :

Algoritma pengurutan dengan metode seleksi dapat diilustrasikan demikian. Misalkan diberikan data awal :
[8, 4, 7, 3, 1, 2, 6, 5]
Data pertama adalah 8. Akan dicari (atau tepatnya “dipilih/diseleksi”) data terkecil dari data kedua sampai terakhir yang terkecil untuk menempati posisi pertama (i=1) ini. Data terkecil ditemukan pada posisi ke-5 (t=5). Maka data pertama ditukar dengan data ke-5, menjadi :
[1, 4, 7, 3, 8, 2, 6, 5]
Langkah ini diulang untuk data kedua (i=2). Ditemukan data terkecil pada posisi ke-6 (t=6). Data ke-2 ditukar dengan data ke-6, menjadi :
Langkah ini diulang untuk data kedua (i=2). Ditemukan data terkecil pada posisi ke-6 (t=6). Data ke-2 ditukar dengan data ke-6, menjadi :
[1, 2, 73, 8, 4, 6, 5]
Fase selengkapnya dapat dilihat pada data berikut ini.
Data awal : [8, 4, 7, 3, 1, 2, 6, 5] 1 terkecil, 8ßà1
fase 1 [1, 4, 7, 3, 8, 2, 6, 5] 2 terkecil, 4ßà2
 fase 2 [1, 2, 7, 3, 8, 4, 6, 5] 3 terkecil, 7ßà3
 fase 3 [1, 2, 3, 7, 8, 4, 6, 5] 4 terkecil, 7ßà4
 fase 4 [1, 2, 3, 4, 8, 7, 6, 5] 5 terkecil, 8ßà5
 fase 5 [1, 2, 3, 4, 5, 7, 6, 8] 6 terkecil, 7ßà6
 fase 6 [1, 2, 3, 4, 5, 6, 7, 8] 7 terkecil, tetap
fase 7 [1, 2, 3, 4, 5, 6, 7, 8]
fase 8 [1, 2, 3, 4, 5, 6, 7, 8]

 terus bagaimana langkah-langkah nya :

bagai mana algoritmanaya :



Algoritma sorting data
{menyorting data dari kecil ke besar, algoritma menerima masukan yaitu batas(n) dan data,, menorting , lalu mencetak}
Procedure baca_data(int A[] ,int n){
Write A[i]
for i ß0,i<n,i++ than input A[i]
}

Procedure cetak_data(const int A[],int n){
for  i ß0,i<n,i++ than output A[i]
}

Procedure minimum(int A[], int dari, int n, int * tempat){
min ß A[dari]
*tempat ß dari
for i ßdari+1, i<n; i++ than do if A[i] < min
min ß A[i]
*tempat ß i
}
Procedure selection_sort(int A[], int n)
{
for i ß 0, i<n, i++
{ minimum(A, i, n, &t);
tukar(&A[i], &A[t]);
}
}


Deklarasi :
n, A[i]    : integer {input}
A[i]         : integer {output}

Deskripsi :
Read(n,A[i])
For iß0,i<n,i++
Than do sorting
Write(A[i])




 ,,,,,, langsung aja ya ,, kita simak ke codinganya......





#include <iostream>
#include <string>

using namespace std;
void baca_data(int A[], int n)
{ int i;
for (i = 0; i < n; i++)
{ cout << "Data ke- "<<i+1<<": ";
cin >> A[i];
}
}
void cetak_data(const int A[], int n)
{ int i;
for (i = 0; i < n; i++)
cout <<A[i]<<" ";
cout << "\n";
}
void tukar (int *a, int *b)
{ int temp;
temp = *a;
*a = *b;
*b = temp;
}
void minimum(int A[], int dari, int n, int * tempat)
{ int i, min;
min = A[dari];
*tempat = dari;
for (i = dari+1; i<n; i++)
if (A[i] < min)
{ min = A[i];
*tempat = i;
}
}
void selection_sort(int A[], int n)
{ int i, t;
for (i = 0; i<n; i++)
{ minimum(A, i, n, &t);
tukar(&A[i], &A[t]);
}
}
main() {
int data[10], n;
cout << "Banyak data : ";
cin >> n;
baca_data(data,n);
cetak_data(data,n);
selection_sort(data,n);
cetak_data(data,n);
return 0;
}

ada juga flowchart nya meskipun berbeda dengan c++,,, semoga bsa jadi refrensi



Jumat, 08 April 2016

Simulasi Membeli Bahan Bakar (SPBU/BBM).

Assalamu’alaikum w.w.,
Pada kesempatan ini saya akan memposting Program dari materi PERULANGAN (LOOP) , program ini akan dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Tentang Simulasi Membeli Bahan Bakar (SPBU/BBM).
Buat simulasi membeli bahan bakar dengan spesifikasi :
  1. Input berupa :
    1. uang/berapa liter yang akan dibeli
    2. Jenis bahan bakar yang akan dibeli
  2. Indikator akan berlangsung terus (kenaikkan 0.1liter) selama total harga/jumlah liter bahan bakar yang dibeli belum melebihi permintaan
  3. Output menyatakan :
    1. Jumlah liter yang dibeli (bila input berupa uang)
Total uang yang harus dibayar (bila input berupa liter)

 Berikut ini adalah Gambar Program Flowchart yang menggunakan Aplikasi RAPTOR :



Outputnya :
1. Bensin
2. Pertamax
3. Solar

Dan yang ini Gambar Program C++ yang Menggunakan Aplikasi Dev C++ :
#include <iostream>
#include <string>
#include <cstdlib>
#include <math.h>

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

using namespace std;

   class BBM {
   private:
   float uang, pilihan;
   double hasil1,hasil2,hasil3;
   public:
     void Set_Pilihan(){
         cout<<"\t\t\t  |      SPBU BARU       |"<<endl;
         cout<<"\t\t\t  ========================"<<endl<<endl;
         cout<<"\t\t\t\tPilihan Jenis BBM"<<endl<<endl;
         cout<<" 1. Bensin"<<endl;
         cout<<" 2. Solar"<<endl;
         cout<<" 3. Pertamax"<<endl;
         cout<<"\n\nMasukkan Urutan Pilihan Jenis BBM 1..3 : ";
         cin>>pilihan;

       if (pilihan==1){
          cout<<" 1. Bensin"<<endl;
          cout<<"\nMasukkan Uang Anda : ";
          cin>>uang;
          hasil1=uang/4500;
          for (double i=0.1; i<=hasil1; i=i+0.0001){
          cout<<i<<endl<<endl;
          }
          cout<<" Bensin Yang Anda Dapat :"<<hasil1<<" "<<"liter"<<endl;
          }
       if (pilihan==2){
          cout<<" 2. Solar"<<endl;
          cout<<"\nMasukkan uang anda :";
          cin>>uang;
          hasil2=uang/4200;
          for (double j=0.1; j<=hasil2; j=j+0.0001){
          cout<<j<<endl;
          }
          cout<<" Bensin Yang Anda Dapat :"<<hasil2<<" "<<"liter"<<endl;
          }
       if (pilihan==3){
          cout<<" 3. Pertamax"<<endl;
          cout<<"\nMasukkan Uang Anda :";
          cin>>uang;
          hasil3=uang/7000;
          for (double k=0.1; k<=hasil3; k=k+0.0001){
          cout<<k<<endl;
          }
          cout<<" Bensin Yang Anda Dapat :"<<hasil3<<" "<<"liter"<<endl;
          }
         }
       };

int main(int argc, char** argv) {
      int x;
      BBM B;
      B.Set_Pilihan();
      cin>>x;
     
    return 0;
}




Output/hasil compiler dari program tersebut :
 




Transaksi Buku Tabungan.

Assalamu’alaikum w.w.,
Pada kesempatan ini saya akan memposting Program Transaksi Buku Tabungan. Dari masalah yang ada di bawah ini :

Periksa buku tabungan salah satu anggota kelompok. Lakukan detail transaksi pengambilan uang tabungan termasuk detail isian dalam formulir transaksi.
pisahkan algoritma penulisan angka menjadi ejaan :
Misal anda mengambil uang sebesar 300.000 akan tertulis sebagai "Tiga ratus ribu rupiah"
tulislah menggunakan huruf miring (italic) bila pernyataan tertentu boleh berada pada deretan lain. sementara urutan yang HARUS berada pada urutan tertentu tulis dalam huruf tegak (biasa).

Berikut ini adalah Gambar Program Flowchart yang menggunakan Aplikasi RAPTOR :

Kasus 2.3 : Program untuk menghitung konversi dari m ke cm dan inchi



Assalamu’alaikum w.w.,
 Hallo semua .... 
Pada kesempatan ini saya akan memposting Program Flowchart yaitu program yang berupa :
Program untuk menghitung konversi dari m ke cm dan inchi , yang memiliki Input : misalkan m (mewakili meter) dan Proses : 1 meter = 100 cm, inci = 2.54 cm , cm = m *100, inci  = m*100/ 2.54 .

Analisis : 
- Input : Misalkan m (mewakili meter)
- Proses : 1 meter = 100 cm
                1 inchi = 2.54 cm
                cm=m*100
                inchi=m*100/2.54
- Output : Tulis (cm, inchi)

Algoritma :
- Deklarasi   : - m, cm, inchi = float
                       - hasil=float 
- De  skripsi : - Read (m)
                       - cm=m*100  
                       - inchi=m*100/2.54
 

 Berikut ini adalah Gambar Programnya yang menggunakan Aplikasi RAPTOR :

 
 Output/hasil compiler dari program tersebut :
   Hasil Outputnya ini saya memasukkan nilsi m = 4 m , maka Outputnya akan mengeluarkan cm = 400 cm , dan inchi = 157.4803 inchi.

Berikut ini adalah Gambar Programnya yang menggunakan Aplikasi Dev C++ :


 Output/hasil compiler dari program tersebut :
   Hasil Outputnya ini saya memasukkan nilsi m = 4 m , maka Outputnya akan mengeluarkan cm = 400 cm , dan inchi = 157.4803 inchi.

Kasus 2.2 : Program untuk mencari hasil kali dari dua buah bilangan



Assalamu’alaikum w.w.,
 Hallo semua .... 
Pada kesempatan ini saya akan memposting Program Flowchart yaitu program yang berupa :
Program untuk mencari hasil kali dari dua buah bilangan, yang memiliki Input : misalkan a, b semua integer.

Buat algoritma dan program untuk mencari hasil kali dua buah bilangan.
Analisis :
- Input    : Misalkan a,b semua integer
- Proses : hasil <=a*b
- Output : Tulis (hasil)

Algoritma :
- Menerima Inputan dari krdua bilangan
Mengalihkan kedua bilangan tersebut
- Menampilkan hasil perkalian dari kedua bilangan


  
Berikut ini adalah Gambar Programnya yang menggunakan Aplikasi RAPTOR :


 Output/hasil compiler dari program tersebut :
   Hasil Outputnya dari hasil Perkalian Angka : 7*8 = 56


Berikut ini adalah Gambar Programnya yang menggunakan Aplikasi Dev C++ :

#include <iostream>
#include <cstdlib>

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

using namespace std;

int main(int argc, char** argv) {
    int a,b,jumlah;
   
    cout<<"Masukkan = ";cin>>a;
    cout<<"Masukkan = ";cin>>b;
    jumlah=a*b;
    cout<<"Hasil = "<<jumlah;
   
    return 0;
}


 Output/hasil compiler dari program tersebut :
   Hasil Outputnya dari hasil Perkalian Angka : 7*8 = 56

Kasus 2.1 : Program untuk mencari jumlah dari 3 buah bilangan bulat



Assalamu’alaikum w.w.,
  Hallo semua .... 
Pada kesempatan ini saya akan memposting Program Flowchart yaitu program yang berupa : Program untuk mencari jumlah dari 3 buah bilangan bulatt.


Hitunglah jumlah dari 3 buah bilangan bulat.
Analisis :
- Input   : Misalkan a, b, c semua integer
- Proses : jumlah <=a+b+c
Output   : Tulis (jumlah)

 Algoritma :
- Menerima Input dari 3 bilangan bulat
- Menjumlahkan Ketiga bilangan tersebut 
- Lalu mencetak hasil penjumlahannya
  

Berikut ini adalah Gambar Programnya yang menggunakan Aplikasi RAPTOR :


 Output/hasil compiler dari program tersebut :
   Hasil Outputnya dari hasil Penjumlahan Angka : 4+6+8 = 18



Berikut ini adalah Gambar Programnya yang menggunakan Aplikasi De v C++ :
#include <iostream>
#include <cstdlib>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std ;
int main(int argc, char** argv) {
            int a,b,c,jumlah;
   
            cout<<" Masukkan Angka 1 : ";
    cin>>a;
    cout<<" Masukkan Angka 2 : ";
    cin >> b;
    cout<<" Masukkan Angka 3 : ";
    cin>>c;
    cout<<endl;
    jumlah =(a+b+c);
    cout<<"Jumlah 3 Buah Bilangan : "<<jumlah;
           
            return 0;
}

Output/hasil compiler dari program tersebut :

bab 6

bab 6 https://drive.google.com/open?id=0BzL9pJeEU3V6T0Z6eUdSVThnN1E

bab 5

bab 5

latihan 1 : https://drive.google.com/open?id=0BzL9pJeEU3V6MDZSSnA0c2hPVVU

latihan 2 : https://drive.google.com/open?id=0BzL9pJeEU3V6aDNaVmhZd1dhRU0

Bab 4 : Pemilihan/ Kontrol Program.

Diktat (Workshop Pemrograman)
    
    1.      Buatlah flowchart dan translasi program dari algoritma 3.2.b. di atas.

             Algoritma menentukan_bilangan_terbesar
            {mencari bilangan terbesar dari 3 bilangan yang diinput}
    Deklarasi :
            Integer a,b,c,terbesar;
    Deskripsi :
            Write(“Masukkan Bilangan Pertama : ”);
            Read(a);
            Write(“Masukkan Bilangan Kedua : ”);
            Read(b);
            Write(“Masukkan Bilangan Ketiga : ”);
            Read(c);
            if (a>b) then
                        if (a>c)
                                    then write(“Terbesar = ”,a);
                                    else wrie(“Terbesar = ”,c);
                        endif
            else if (b>c)
                        then write(“Terbesar = ”,b);
                        else write(“Terbesar = ”,c);
            endif
            endif
     C++ :
      Inilah Programnya :

        Inilah Outputnya :

       Raptor :
       Inilah Programnya :


       Inilah Outputnya :


    2.      Sempurnakan algoritma 3.3. dengan akar imajiner berbentuk : a + bi dengan a dan b bilangan real dan bila harga b2 􀀐 4ac 􀀟 0 . Perhatikan bahwa nilai a dan b dihitung terpisah.

    Rumus menghitung nilai a :



    Rumus menghitung nilai b :



   Operator Overloading untuk output :
   Algoritma :

   {Input: a,b,c mencari akar-akar persamaan kuadrat dan mencari akar-akar persamaan kuadrat}
  Deklarasi:

a,b,c : integer{Input}
disk : longint{output}
x1,x2 : real{output}
   Deskripsi:
read(a,b,c)
disk<--b*b-4a*c
if (a=0) then write('Bukan persamaan kuadrat')
else if disk>0 then
  x1<---(-b)+sqrt(disk)/2*a
  x2<---(-b)-sqrt(disk)/2*a
else if disk=0 then
  x1<---(-b)/2*a
  x2<---x1
else write('Akar Imajiner')
end if
                       write(x1,x2)
     C++ :
     Inilah Programnya :



      Inilah Outputnya :


      Raptor :
      Inilah Programnya :




      Inilah Outputnya :



    3.      Buatlah program dari algoritma 3.4. menggunakan case … of .
           

            Algoritma konversi nilai

{       dibaca nilai angka kemudian di konversi ke nilai huruf}
Deklarasi :
nilai   : integer
nilai_huruf : char
      Deskripsi
read(nilai)
if (nilai>0) and (nilai <=20) then nilai_huruf <- E
      else if (nilai > 21) and (nilai<=40)then nilai_huruf <-  D
      else if (nilai > 41) and (nilai<=60)then nilai_huruf <-  C
      else if (nilai > 61) and (nilai<=80)then nilai_huruf <-  B
      else nilai_huruf <- A
                  end if
                 write(nilai_huruf)
 
           C++:
           Inilah Programnya :


           Inilah Outputnya :  

 
     Raptor :
     Inilah Programnya :


     Inilah Outputnya :  

 
    4.      Buatlah algoritma, flowchart dan program untuk mengecek apakah pemakai memasukkan bilangan bulat atau bilangan real.
Lebih dulu, carilah perbedaan dari 1.0 dan 1 kemudian 1 dan 1.23.
Perbedaan :
Algoritma :

   Algoritma_menentukan_bil_bulat/bil_real
   {menentukan bilangan bulat atau real dari input yang di masukan}  
   Deklarasi :
      a    =float
      b   = integer
     bil  = char


  Deskripsi :
     b=a
    read(a)
    if(a=b) then bil <-- 'adalah bil bulat'
    else bil<-- 'adalah bi real'
    endif
    write(bil)

 
     C++:
     Inilah Programnya :


     Inilah Outputnya :  

 
     Raptor :
     Inilah Programnya :


     Inilah Outputnya :  

 
    5.      Buatlah algoritma, flowchart dan program untuk menentukan banyaknya hari dalam suatu bulan dan tahun yang diberikan. Pertimbangkan pula adanya tahun
kabisat di mana bulan Februari mempunyai jumlah 29 hari. Gunakan case .. of
dan if .. then .. else .. yang tepat untuk setiap kasus.


Algoritma menentukan hari dalam satu bulan

{ input bulan dan tahun kemudian output jumlah hari dalam satu bulan

Deklarasi :
   AngkaBulan : integer;           { 1 . . 12 }
   Tahun      : integer;          { > 0 }
   JumlahHari : integer;
Deskripsi :
begin
     write('Bulan (1-12) = ');
     write('Tahun = ');
     case AngkaBulan of
          1, 3, 5, 7, 8, 10, 12   : JumlahHari:=31;
           4, 6, 9, 11            : JumlahHari:=30;
           2                      : if Tahun mod 4 = 0 then
                                        JumlahHari:=29
                                    else
                                        JumlahHari:=28;
                                   {endif}
    end;
      
    writeln('Jumlah hari dalam bulan ',AngkaBulan,' adalah ',JumlahHari);
                end. 

C++ :
 Inilah Programnya :


 Inilah Outputnya :  

 
6. Buatlah algoritma, flowchart dan program untuk mengecek apakah karakter yang
dimasukkan itu merupakan huruf besar, huruf kecil atau digit (bilangan).
Gunakan fungsi ORD(char) untuk menyatakan nomor urut dalam tabel ASCII.
Algoritma :

      Algoritma mengecek karakter yang dimasukkan termasuk huruf kapital, huruf kecil atau digit

{input karakter kemudian di cek apakah huruf besar, kecil atau digit}
Deklarasi :
            karakter : string {input, output}
Deskripsi :
            Read(karakter)
            if(karakter>=’A’ && karakter<=’Z’) ß Huruf kapital
            else if(karakter>=’a’ && karakter<=’z’) ß huruf kecil
            else(karakter>=’0’ && karakter<=’9’) ß digit
            endif
write(karakter )
 
C++:
 Inilah Programnya :


 Inilah Outputnya :  



 Raptor :
 Inilah Programnya :


 Inilah Outputnya :  

 
7. Seorang dosen ingin mengkonversikan nilai angka hasil ujian mahasiswa menjadi nilai huruf dengan ketentuan :
Nilai antara Nilai Huruf
0-60 F
61-70 D
71-80 C
81-90 B
91-100 A


   Algoritma konversi nilai

{dibaca nilai angka kemudian di konversi ke nilai huruf}
Deklarasi :
nilai   : integer
nilai_huruf : char
Deskripsi
read(nilai)
if (nilai>0) and (nilai <=60) then nilai_huruf <- E
else if (nilai > 61) and (nilai<=70)then nilai_huruf <-  D
else if (nilai > 71) and (nilai<=80)then nilai_huruf <-  C
else if (nilai > 81) and (nilai<=90)then nilai_huruf <-  B
else nilai_huruf <- A
end if
write(nilai_huruf)
 
C++:
 Inilah Programnya :


 Inilah Outputnya :  

 Raptor :
 Inilah Programnya :


  Inilah Outputnya :  

8. Diberikan ketentuan pecahan uang di Indonesia. User memasukkan sebuah bilangan,  program harus dapat memecahnya menjadi pecahan sesuai dengan mata uang di Indonesia.
Misalkan dimasukkan nilai uang 127.675 rupiah. Cobalah memecah secara
manual nilai uang di atas.
Algoritma :


        Algoritma membaca nilai bilangan dengan Pangkat
{Diberikan masukan x dan y, dihitung nilai dari x pangkat y}
Deklarasi :
x, y, i : integer { input }
pangkat : integer { output }
Deskripsi :
read (x,y)
pangkat ß 1
for i ß 1 to y do
pangkat ß pangkat * x
enfor
write (pangkat)
     
Inilah Programnya :

Inilah Outputnya :  

9. Seorang pegawai bekerja selama 5 hari kerja, yaitu Senin sampai Jum’at. Setiap
hari dia masuk jam 08.00 dan pulang jam 16.00. Kecuali Jum’at dia pulang jam
11.00. Apabila dia bekerja lebih dari 30 jam per bulan maka setiap 5 jam akan
memperoleh uang lembur sebesar Rp 30.000,- bila kurang dari 5 jam maka akan
dihitung Rp 4.000,-/jam. Buat program dengan masukan bulan yang diinginkan,
dan outputnya berupa besarnya uang lembur pegawai tersebut.
Perhitungan secara manual :
    Algoritma menghitung Gaji Pegawai
Deklarasi

NIK, Nama : String
Jhk, tunj.jabatan, tunj.makan, tunj.transport, gaji_kotor, pajak, gaji_bersih : Real
Deskripsi
READ (NIK, Nama, gaji_pokok, tunj.jabatan, Jhk)
tunj.makan = 10000 * Jhk
tunj.transport = 5000 * Jhk
gaji_kotor = (gaji_pokok + tunj.jabatan + tunj.makan + tunj.transport)
pajak = 0.1 * gaji_kotor
gaji_bersih = (gaji_kotor – pajak)
write (tunj.makan, tunj.transport, gaji_kotor, pajak, gaji_bersih)
end
Inilah Programnya :






Inilah Outputnya :