This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Jumat, 16 Juni 2017

Diktat ke 10

DIKTAT BAB 10


Assalamu'alaikum wr.wb

Oke, pada kesempatan kali ini saya akan posting latihan Diktat yang terakhir yaitu latihan Diktat bab 10. 

Translasi 9.1

#include <iostream>
#include <conio.h>
using namespace std;

class Mhs {
public:
void Buat_berikut_list();
char Nama[20];
char Nim[10];
Mhs *berikut;
};

void Mhs::Buat_berikut_list(){
Mhs *Ptr_Kepala = NULL;
Mhs *Ptr_Baru;
char lagi;
do {
Ptr_Baru = new Mhs;
cout << "\nNama Mahasiswa : ";
cin >> Ptr_Baru->Nama;
cout << "Nim Mhs : ";
cin >> Ptr_Baru->Nim;
Ptr_Baru->berikut = Ptr_Kepala;
Ptr_Kepala = Ptr_Baru;
cout << "Tambah (y/t) : ";
} while ((lagi=getch()) !='t');
cout << "\nAnda telah memasukkan data : ";
Mhs *cetak = Ptr_Kepala;
// mencetak isi link list
while (cetak != NULL) {
cout << "\nNama Mahasiswa : " << cetak->Nama;
cout << "\tNim Mhs : " << cetak->Nim;
cetak = cetak->berikut;
}
}
main() {
Mhs *simpul;
simpul->Buat_berikut_list();
getch();
}

Mahasiswa

#include <iostream>
using namespace std;


class Mhs {
public :
int nim;
char nilai;
};
typedef Mhs *Ptrmhs;
 main() {
Ptrmhs P1, P2, P3;
P1 = new Mhs;
P1->nim = 101;
P1->nilai = 'A';
cout << "P1 : " << P1->nim << " " << P1->nilai << endl;
P2 = new Mhs;
P2 = P1; /* salin alamatnya */
cout << "P2 : " << P2->nim << " " << P2->nilai << endl;
P2->nim = 102;
P2->nilai = 'B';
cout << "P1 : " << P1->nim << " " << P1->nilai << endl;
cout << "P2 : " << P2->nim << " " << P2->nilai << endl;
P3 = new Mhs;
*P3 = *P1; /* salin isinya */
cout << "P1 : " << P1->nim << " " << P1->nilai << endl;
cout << "P3 : " << P3->nim << " " << P3->nilai << endl;
P3->nim = 103;
P3->nilai = 'C';
cout << "P1 : " << P1->nim << " " << P1->nilai << endl;
cout << "P3 : " << P3->nim << " " << P3->nilai << endl;

return 0;
}


Latihan

Modifikasilah struktur data dari algoritma 9.1. dan algoritma 9.2. sehingga sesuai dengan
tabel di bawah ini dengan menggunakan link list.


 NO
 NIM
 NAMA
 UJIAN
 NILAI
 MID
 AKHIR
 TOTAL
 HURUF
 1
 1600018035
 FIRDAUS
 80
 95
 90
 A
 2
 1600018013
 ALIF
 45
30 
35 
 D
 3
 1600018004
 JEJE
 50
50 
50 
 C
 4
 1600018040
 FAJAR
 90
60 
70 
 B
 5
 1600018018
 RIZAL
 40
10 
20 
 E



1.       Identifikasi Masalah
→Modifikasi struktur data dari algoritma 9.1. dan algoritma 9.2. sehingga sesuai dengan
tabel di atas dengan menggunakan link list.

1.       Menentukain input dan output
→input                 :Nama
                             Nim
                             Nilai

→output             :Nilai Huruf adalah
                      


2.       Membuat Algoritma atau Flowchart
Algoritma
Deklarasi:
                Nama[30]                            :karakter
                Nim[10]                               :karakter
                Nilai                                     :integer
Deskripsi:
while when lagi=='Y' then lagi=='y'
    while (cetak !=NULL)
if when cetak->Nilai>=0 and cetak->Nilai<20
E
else if when cetak->Nilai>=20 and cetak->Nilai<40
else if when cetak->Nilai>=40 and cetak->Nilai<60
C
else if when cetak->Nilai>=60 and cetak->Nilai<80
B
Else
A
cetak=cetak->berikut
end if
end while
end while


3.       Test menggunakan data
→input                 :Nama adalah

             FIRDAUS
             ALIF
             JEJE
             FAJAR
             RIZAL


          Nim adalah
1600018035
1600018013
1600018004
1600018040
1600018018

         Nilai adalah 


              95
              30
              50
              80
              10






→output             : Nilai Huruf adalah


            A
            D
            C
            B
            E


4.       Source Code
#include <iostream>
#include <conio.h>
#include <windows.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
class Mhs{
                public:
                                void Buat_berikut_list();
                                char Nama[30];
                                char Nim[10];
                                int Nilai;
                               
                                Mhs *berikut;
};
void Mhs::Buat_berikut_list(){
                Mhs *Ptr_Kepala = NULL;
                Mhs *Ptr_Baru;
                char lagi;
                do{
                                Ptr_Baru= new Mhs;
                                cout<<"\nNama Mahasiswa : ";
                                cin>>Ptr_Baru->Nama;
                                cout<<"\nNim Mahasiswa : ";
                                cin>>Ptr_Baru->Nim;
                                cout<<"\nNilai Mahasiswa : ";
                                cin>>Ptr_Baru->Nilai;
                                Ptr_Baru->berikut=Ptr_Kepala;
                                Ptr_Kepala=Ptr_Baru;
                               
                                cout<<"Tambah (y/t) : ";
                                cin>>lagi;
                               
                } while (lagi=='Y' || lagi=='y');
                system("cls");
                cout<<"\nAnda telah memasukkan data : "<<endl;
                Mhs *cetak= Ptr_Kepala;
                cout<<"Nama \t\t Nim \t\t Nilai Angka \t\t Nilai Huruf"<<endl;
                while (cetak !=NULL){
                                cout<<cetak->Nama<<" \t\t"<<cetak->Nim<<" \t\t"<<cetak->Nilai<<" \t\t";
                               
                                if (cetak->Nilai>=0&&cetak->Nilai<20)
                                cout<<"E"<<endl;
                                else if(cetak->Nilai>=20&&cetak->Nilai<40)
                                cout<<"D"<<endl;
                                else if(cetak->Nilai>=40&&cetak->Nilai<60)
                                cout<<"C"<<endl;
                                else if(cetak->Nilai>=60&&cetak->Nilai<80)
                                cout<<"B"<<endl;
                                else
                                cout<<"A"<<endl;
                                cetak=cetak->berikut;
                }
}
int main(int argc, char** argv) {
                Mhs *simpul;
                simpul->Buat_berikut_list();
                getch();
}


5.       Eksekusi



Sekian Postingan Kali ini, semoga bermanfaat

Wassalamu'alaikum wr.wb                      

Diktat ke 9

DIKTAT BAB 9


Assalamu'alaikum wr.wb

Kali ini saya akan memposting latihan diktat bab 9 pada pertemuan ke-11.

1. Buatlah algoritma dan program untuk mengalikan matriks dengan vektor. Vektor adalah matriks berdimensi satu (bisa matriks baris maupun matriks kolom). Implementasikan matriks dengan array berdimensi dua, dan vektor dengan menggunakan matriks berdimensi satu.

1.    Identifikasi masalah
→ mengalikan matriks dengan vector 
2.   Menentukan input dan output
→ input                    :baris
                                :kolom
                                :A[max]
                                : m[baris]
                                :n
→output                  :perkalian matriks dan vektor=
      3. Membuat Algoritma/flowchart
Deklarasi:
A[maks][maks], baris, kolom, m[baris] ,n              :integer

Deskripsi:
for i ←0 to baris do then i++
for j←0 to kolom do then j++
write(‘Masukan data ke ["<<i<<"] ["<<j<<"]’)                   
end for
end for
               
               
write(‘Isi Matriks A ‘)
for i ←0 to baris do then i++
for j←0 to kolom do then j++
write(‘A[i][j]’)

end for
end for

write(‘penghitungan vektor ‘)
for z←0 to kolom do then z++
write(‘Masukan data ke ["<<z<<"] ‘)                      
end for

write(‘ vektor ‘)
for z←0 to kolom do then z++
write(‘m[z]’)
end for

write(‘perkalian matrik dan vektor ‘)
for i ←0 to baris do then i++
for j←0 to kolom do then j++
for z←0 to kolom do then z++
n←A[i][j]*m[z]
end for
end for
end for

            4. Test menggunakan data
inputin→             :baris[2]=|1|
                                          |2|
                           Kolom[2]=|1|
                                             |2|
                           Isi matrik A=|1| |2|
                                               |1| |2|
                           Berapa variable=2
                           Vektor b=|1|
                                           |2|

output→             :perkalian matrik dan vektor= 1 2 2 4 1 2 2 4

      5.  Implementasi dengan c++
#include <iostream>
#define maks 10
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
int A[maks][maks], baris, kolom;
cout<<"input baris :"; cin>>baris;
cout<<"input kolom :"; cin>>kolom;       
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
cout<<"Masukan data ke ["<<i<<"] ["<<j<<"] : "; cin>>A[i][j];                    
}             
}             
cout<<"Isi Matriks A :\n";
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
cout<<A[i][j]<<" ";
}
cout<<endl;
}
int m[baris],n;
cout<<"penghitungan vektor \n";
cout<<"berapa variabel : ";
                cin>>m[kolom];
                for(int z=0; z<kolom; z++){
                cout<<"Masukan data ke ["<<z<<"] "" : "; cin>>m[z];                     
}
cout<<endl;

cout<<" vektor b : \n";
                for(int z=0; z<kolom; z++){
cout<<m[z]<<"\n";
}
cout<<"perkalian matrik dan vektor \n";
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
for(int z=0; z<kolom; z++){
n=A[i][j]*m[z];
cout<<n<<" ";
}
}
}
                return 0;
}
  
6. Eksekusi 




2. Diberikan suatu matriks berordo n. Buatlah algoritma dan program untuk mencetak matriks identitas berodo n. 


1.       Identifikasi masalah
→ program untuk mencetak matriks identitas berodo n

2.       Menetukan Input Output:
→ input               :i, j, n

→output             :masukkan ordo matriks

3.       Membuat Algoritma/flowchart
 Algoritma:
Deklarasi:
i, j, n      :integer
Deklarasi:
Write(‘masukkan ordo matriks ‘)
For i←1 to n do i++ then
For j←1 to n do then j++
if(i==j)
write(‘1’)
else
write(‘0’)
end for
end for
end if

Raptor:



4.       Test menggunakan data
→inputin             :masukkan ordo matriks=4

→ouputi              :        1  0  0  0
                                    0    1  0  0
1     0  1  0  
0  0  0  1

5.       Implementasi dengan c++
#include"iostream"
using namespace std;
main(){ int i,j,n;
                cout<<"masukkan ordo matriks : "; cin>>n;
                for(i=1;i<=n;i++){
                                for(j=1;j<=n;j++){
                                                if(i==j) cout<<"1 ";
                                                else cout<<"0 ";
                                }
                                cout<<endl;
                }
}


6.       Eksekusi




3. Buatlah algoritma dan program untuk menghasilkan transpose suatu matriks.

1.       Identifikasi masalah
→menghasilkan transpose suatu matriks.

2.       Menentukan input dan output
→ input               :i, j, m, n ,o, mat [m][n]
               
→output             :transpose matriksnya adalah

3.       Membuat algoritma/flowchart
 Deklarasi:
 i,j,m,n,o,mat[m][n]        :integer

Deskripsi:
write(‘Program transpose matriks C(m,n)’)
for i←0 to m do then i++
for j←0 to n do then j++
write(‘nilai C("<<i+1<<","<<j+1<<")’)
end for
end for
                                               
write(‘matriks diatas diilustrasikan seperti gambaran dibawah ini’)
for i←0 to m do then i++
for j←0 to n do then j++
write(‘mat[i][j]’)
end for
end for

o→m
m→n
n→o;
write(‘Transpose matriksnya adalah seperti gambar dibawah ini\’)
for i←0 to m do then i++
for j←0 to n do then j++
write(‘mat[i][j]’)
end for
end for

Raptor:


 lanjutan....

 lanjutan....



4.       Test menggunakan data
→inputin             :nilai m=3
                            Nilain n=3
                                 
→ouput               :matriks dapat di ilustrasikan seperti gambar di bawah ini
                                1 2 3
                                4 5 6
                                2 4 5
                                transpose matriksnya adalah
                                1 4 2
                                2 5 4
                                3 6 5

5.       Implementasikan dengan c++
#include"iostream"
using namespace std;
main(){ int i,j,m,n,o;
                cout<<"Program transpose matriks C(m,n)\nMasukkan nilai m : ";
                cin>>m; cout<<"masukkan nilai n : "; cin>>n;
                int mat[m][n];
                for(i=0;i<m;i++){
                                for(j=0;j<n;j++){
                                                cout<<"nilai C("<<i+1<<","<<j+1<<")=";
                                                cin>>mat[i][j];
                                }
                                cout<<endl;
                }
                system("cls");
                cout<<"matriks diatas diilustrasikan seperti gambaran dibawah ini\n\n";
                for(i=0;i<m;i++){
                                for(j=0;j<n;j++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
                o=m; m=n; n=o;
                cout<<"\nTranspose matriksnya adalah seperti gambar dibawah ini\n\n";
                for(j=0;j<m;j++){
                                for(i=0;i<n;i++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
}

6.       Eksekusi







4. Buatlah algoritma dan program mengalikan matriks dengan suatu skalar (konstanta).


1.       Identifikasi masalah
→ mengalikan matriks dengan suatu skalar (konstanta)

2.       Menentukan input dan output
→input                 : q,  brs, klm, i, j ,k           

→output             :matriks a=
                           Matriks b=
                           Matriks a x b=

3.       Membuat algoritma/flowchart
Deklarasi:
q,  brs, klm , i, j,k              :integer
for i ← 0 to brs do then i++
for j ← 0 to klm do then j++
write(‘ Elemen (i + 1), (j + 1)’)
end for
end for
           
for i ← 0 to brs do then i++
for j ← 0 to klm do then j++
write((‘q + i * klm + j) ‘)
end for
end for

for i  ←0 to bA do then i++
for j ←0 to kB to then  j++
(z + i * bB + j) ← 0;
For k ← 0 to kA do then  k++
(z + i * bB + j) +=← (p + i * kA + k) * (*(q + k * kB + j))
End for
End for
End for

4.       Test menggunakan data
→input                 :jumlah baris dan kolom matriks A=[2][3]
                             jumlah baris dan kolom matriks B=[3][2]
                             koordinat inputan misalkan berordo=[2][2]

→output             :matriks A x B=|12           12|
                                                    -1            12          

5.       Implementasikan dengan c++
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void Masukan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        for(j = 0; j < klm; j++) {
            cout << " Elemen [" << (i + 1) << "][" << (j + 1) << "]? ";
            scanf("%d", (q + i * klm + j));
        }
    }
}

void Tampilkan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        cout << endl;
        for(j = 0; j < klm; j++) {
            cout <<" ";
            cout << *(q + i * klm + j) << "\t";
        }
    }
    cout << endl;
}

void Kali(int *p, int *q, int *z, int bA, int kA, int bB, int kB) {
    int i, j, k;
    for(i = 0; i < bA; i++) {
        for(j = 0; j < kB; j++) {
            *(z + i * bB + j) = 0;
            for(k = 0; k < kA; k++) {
                *(z + i * bB + j) += *(p + i * kA + k) * (*(q + k * kB + j));
            }
        }
    }
}

int main() {
cout<<"\t\t\tPROGRAM    : PERKALIAN MATRIKS DENGAN SKALAR\n";
awal:
    int *a, *b, *c, brsA, klmA, brsB, klmB;
    cout<<"\n SYARAT...!!!\n";
    cout<<" Jumlah Kolom A HARUS SAMA dengan Baris B\n\n";
    cout << " Jumlah Baris Matriks A? ";
    cin >> brsA;
    cout << " Jumlah Kolom Matriks A? ";
    cin >> klmA;
    cout << " Jumlah Baris Matriks B? ";
    cin >> brsB;
    cout << " Jumlah Kolom Matriks B? ";
    cin >> klmB;
    if(klmA != brsB) {
        cout << " Perkalian TIDAK Dapat Dilakukan." << endl;
        cout << " Jumlah Kolom A TIDAK Sama Dengan Jumlah Baris B." << endl;
    } else {
        a = (int *) malloc(brsA * klmA * 4);
        b = (int *) malloc(brsB * klmB * 4);
        c = (int *) malloc(brsA * klmB * 4);

        cout << "\n Kordinat Inputan [y][x]" ;
        cout << "\n Contoh: ordo 2x2" ;
        cout << "\n [1][1]\t[1][2]\t" ;
        cout << "\n [2][1]\t[2][2]\t" ;
        cout << "\n\n Input Matriks A:\n" ;
        cout << " ----------------\n";
        Masukan(a, brsA, klmA);
        cout << "\n Input Matriks B:\n" ;
        cout << " ----------------\n";
        Masukan(b, brsB, klmB);

        cout << "\n Matriks A:" << endl;
        Tampilkan(a, brsA, klmA);
        cout << "\n Matriks B:" << endl;
        Tampilkan(b, brsB, klmB);
        Kali(a, b, c, brsA, klmA, brsB, klmB);
        cout << "\n Matriks A x B:" << endl;
        Tampilkan(c, brsA, klmB);
    }
cout<<"\n\n Apakah Anda Ingin Mengulang [Y/N] ? "  ;
char m ;
cin>>m;
if (m == 'y' || m== 'Y')
goto awal;
else if (m == 'n' || m== 'N')
{
goto akhir;
}
akhir:
cout<<"\n\n\t\t\t    \"TERMA KASIH\"";
    return 0;
}

6.       Eksekusi










 5. Buatlah algoritma dan program invers matriks berordo dua. Lalu kalikan matriks asal dengan matriks inversnya untuk mengecek apakah hasil kalinya merupakan matriks identitas atau bukan.


1.       Identifikasi masalah
→program invers matriks berordo dua. Lalu kalikan matriks asal dengan matriks  inversnya untuk mengecek apakah hasil kalinya merupakan matriks identitas atau bukan

2.       Menentukan input dan output
→input                 : i, j, det, temp

→output             :untuk inversnya adalah

3.       Membuat algoritma/flowchart
 Raptor:
















.       Test menggunakan Data

→input                 :nilai c(1,1)=2
                             Nilai c(1,2)=1

                             Nilai c(2,1)=1
                             Nilai c(2,2)=2

                             Matriks= 2           2
                                            1           2
→output             :adjoin dari matriks diatas adalah
                                 2             -2
                                 -1             2
                                Untuk inversnya adalah
                                 1             -1
                                -0.5          1
5.       Implementasi dengan c++
#include"iostream"
using namespace std;
main(){ int i,j; float det,temp;
                float mat[2][2], c[2][2], ci[2][2], ch[2][2];
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                cout<<"nilai C("<<i+1<<","<<j+1<<")=";
                                                cin>>mat[i][j];
                                                c[i][j]=mat[i][j];
                                }
                                cout<<endl;
                }
                cout<<"matriks diatas diilustrasikan seperti gambaran dibawah ini\n\n";
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
                mat[0][1]=-mat[0][1]; mat[1][0]=-mat[1][0];
                temp=mat[0][0]; mat[0][0]=mat[1][1]; mat[1][1]=temp;
                cout<<"\nadjoin dari matriks diatas adalah\n";
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
                det=mat[0][0]*mat[1][1]-mat[1][0]*mat[0][1];
                det=1/(float)det;
                cout<<"\nSedangkan untuk inversnya adalah sebagai berikut\n";
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                ci[i][j]=det*mat[i][j];
                                                cout<<ci[i][j]<<" ";
                                }
                                cout<<endl;
                }
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                 for(int k=0;k<2;k++){
                                                temp=c[i][k]*ci[k][j];
                                                ch[i][j]=ch[i][j]+temp;
                                                 }
                                }
                }
                cout<<"\nhasil perkalian matriks asal dengan\nmatriks yang telah di invers adalah\n";
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                cout<<ch[i][j]<<" ";
                                }
                                cout<<endl;
                }
}

6.       Eksekusi



                 

Sekian Postingan kali ini, semoga bermanfaat bagi kita semua ,

Wassalamu'alaikum wr.wb

Diktat ke 8

DIKTAT BAB 8

Assalamu'alaikum wr.wb

Latihan

1. Perhatikan bahwa Anda dapat melewatkan banyak nomor dalam daftar dan masih berada dalam urutan menaik yaitu sebagai berikut :
3 4 6 17 21 24 32 43
Angka-angka ini meningkat saat Anda bergerak melalui daftar dari kiri ke kanan. Bangunlah sebuah array yang berisi angka-angka tersebut ? Kemudian lakukan pencarian biner (Binary Search) untuk memeriksa apakah angka yang kita cari ada dalam daftar array tersebut ?

Source Code:
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
 const int Ar[8] = {3,4,6,17,21,24,32,43};
 int tar;

cout<<"masukan data yang dicari : ";
 cin>>tar;
int awal=0, akhir=10, tengah;


 while (awal <= akhir)
  { tengah = (awal + akhir)/2;
  if (tar > Ar[tengah] )      // descending ubah tanda > menjadi <
      { awal = tengah + 1; }
  else if (tar < Ar[tengah])  // descending ubah tanda < menjadi >
  {akhir= tengah - 1;}
  else {awal = akhir +1;
  }
   }
   if (tar == Ar[tengah])
   {cout<<" Data ditemukan, Ke- "<<tengah+1<<endl;
   }
   else {
    cout<<"target tidak ditemukan "<<endl;
   }
getch();

}

Dev C++:



Output:



2. Jika terdapat sebuah array yang elemennya berindeks 1 sampai dengan 15. Masing-masing elemen berturut-turut berisi nilai sebagai berikut: 
1, 2, 8, 25, 30, 49, 50, 55, 60, 61, 68, 70, 72, 84, 90.
a. Jelaskan langkah-langkah pencarian nilai 49 dalam array tersebut dengan metode pencarian biner, sehingga menghasilkan indeks elemen array tempat ditemukannya nilai tersebut.
b. Jelaskan langkah-langkah pencarian nilai 71 dalam array tersebut dengan metode pencarian biner, sehingga menghasilkan kesimpulan bahwa nilai tersebut tidak berhasil ditemukan.

Source Code:
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
 const int Ar[15] = {1,2,8,25,30,49,50,55,60,61,68,70,72,84,90}; // untuk proses ascending
 int tar;

cout<<"masukan data yang dicari : ";
 cin>>tar;
int awal=0, akhir=10, tengah;


 while (awal <= akhir)
  { tengah = (awal + akhir)/2;
  if (tar > Ar[tengah] )      // descending ubah tanda > menjadi <
      { awal = tengah + 1; }
  else if (tar < Ar[tengah])  // descending ubah tanda < menjadi >
  {akhir= tengah - 1;}
  else {awal = akhir +1;
  }
   }
   if (tar == Ar[tengah])
   {cout<<" Data ditemukan, data berada di indeks ke-"<<tengah+1<<endl;
   }
   else {
    cout<<"target tidak ditemukan "<<endl;
   }
getch();

}


Dev C++:
 

Output:
 

3. Urutkan deret angka berikut dengan bubble sort :
7 4 5 8 10
Tuliskan hasil tiap langkah (step). 
Source Code:
#include <iostream>

/* 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, k, c, d, g;
    k=5;
    int b[5];
    cout<<"\t\tPROGRAM MENGURUTKAN ANGKA DENGAN BUBLE SORT\n\n";
    for(a=0; a<k; a++){
        cout<<"Masukkan nilai ke-"<<a+1<<":";
        cin>>b[a];
    }
    for (a=0; a<k-1; a++){
        for (d=a+1; d<k; d++){
        c=a;
        if (b[c]>b[d]){
            c=d;
        }    
        g=b[c];
        b[c]=b[a];
        b[a]=g;
        }
    }
    cout<<"\nSetelah diurutkan maka akan menjadi :\n";
    for(a=0; a<k; a++){
        cout<<b[a]<<"  ";
    }
    return 0;
}


Dev C++:
 

Output:





5. Urutkan deret angka berikut dengan selection sort dan tuliskan hasil tiap langkah (step) :
21 16 25 8 19 4 1 

Analisis:
[21, 16, 25, 8, 19, 4, 1]
Data pertama : 21
Mencari data terkecil dari data kedua sampai terakhir.
(i=1)
Data terkecil ditemukan pada posisi ke-7 (t=7), maka data pertama ditukar pada posisi ke-7, menjadi:
[1, 16, 25, 8, 19, 4,21]
Langkah ini diulang untuk data kedua (i=4). Ditemukan pada posisi ke-6 (t=6).
Data kedua ditukar dengan data ke-6, menjadi :
[1, 4, 25, 8, 19,16,  21]

Fase selengkapnya :
Data awal :          [21, 16, 25, 8, 19, 4, 1]            1 terkecil, 21               1
Fase 1              [1, 16, 25, 8, 19, 4, 21]            4 terkecil, 16               4
Fase 2              [1, 4, 25, 8, 19, 16, 21]            8 terkecil, 25               8
Fase 3              [1, 4, 8, 25, 19, 16, 21]            16 terkecil, 25             16
Fase 4              [1, 4, 8, 16, 19, 25, 21]            19 terkecil, 19             19
Fase 5              [1, 4, 8, 16, 19, 25, 21]            21 terkecil, 25             21
Fase 6              [1, 4, 8, 16, 19, 21, 25]            25 terkecil tetap.
Fase 7              [1, 4, 8, 16, 19, 21, 25]           
Fase 8              [1, 4, 8, 16, 19, 21, 25]           



Source Code:
#include <iostream>
#include <conio.h>
using namespace std;
int data[10],data2[10];
int n;

void tukar(int a, int b)
{
 int t;
 t = data[b];
 data[b] = data[a];
 data[a] = t;
}
void selection_sort()
{
 int pos,i,j;
 for(i=1;i<=n-1;i++)
 {
  pos = i;
  for(j = i+1;j<=n;j++)
  {
   if(data[j] < data[pos]) pos = j;
  }
  if(pos != i) tukar(pos,i);
 }
}

int main()
{
 cout<<"URUT DERET ANGKA DENGAN SELECTION SORT"<<endl<<endl;

 cout<<"Masukkan Jumlah Data : ";
 cin>>n;
 for(int i=1;i<=n;i++)
 {
  cout<<"Masukkan data ke "<<i<<" : ";
  cin>>data[i];
  data2[i]=data[i];
 }

 selection_sort();
 cout<<"Data Setelah di Sort : ";
 for(int i=1; i<=n; i++)
 {
  cout<<" "<<data[i];
 }

 getch();
}


Dev C++:


lanjutan...

Output:



6. Diketahui deret angka sebagai berikut :
5 2 4 6 1 3
Dari deret angka tersebut, lakukan pengurutan dari yang paling kecil sampai paling besar menggunakan insertion sort ! 
Source Code:
#include <iostream>
#include <conio.h>
using namespace std ;
int data[10],data2[10];
int n;

void insertion_sort()
{
 int temp,i,j;
 for(i=1;i<=n;i++)
 {
  temp = data[i];
  j = i -1;
  while(data[j]>temp && j>=0)
  {
   data[j+1] = data[j];
   j--;
  }
 data[j+1] = temp;
 }
}
int main()
{

//INPUT DATA
 cout<<"Masukkan Jumlah Data : ";
 cin>>n;
 cout<<endl;
 for(int i=1;i<=n;i++)
 {
  cout<<"Masukkan data ke-"<<i<<" : ";
  cin>>data[i];
  data2[i]=data[i];
 }

 insertion_sort();

 cout<<endl<<endl;

 //MENAMPILKAN DATA
 cout<<"Data Setelah di Sort : ";
 for(int i=1; i<=n; i++)
 {
  cout<<" "<<data[i];
 }
 cout<<endl<<endl<<"Sorting Selesai";
 getch();
}

Dev C++:


lanjutan...
 


 

Output:



7. Mari kita lihat daftar nomor dari sebuah array untuk melihat bagaimana cara merge sort bekerja :
32 12 5 18 31 4 25 7
[0] [1] [2] [3] [4] [5] [6] [7]
Lakukan sorting dari data dalam array di atas menggunakan merge sort sehingga nomor kecil berada paling depan samapai yang paling besar berada paling belakang ! 
Analisis:
[ 32, 12, 5, 18, 31, 4, 25, 7 ]



Source Code:
#include <iostream>  
#include <conio.h>  
using namespace std;
int a[50];  
void merge(int,int,int);  
void merge_sort(int low,int high)  
{  
 int mid;  
 if(low<high)  
 {  
  mid=(low+high)/2;  
  merge_sort(low,mid);  
  merge_sort(mid+1,high);  
  merge(low,mid,high);  
 }  
}  
void merge(int low,int mid,int high)  
{  
 int h,i,j,b[50],k;  
 h=low;  
 i=low;  
 j=mid+1;  
 while((h<=mid)&&(j<=high))  
 {  
  if(a[h]<=a[j])  
  {  
   b[i]=a[h]; h++;  
  }  
  else  
  {  
   b[i]=a[j]; j++;  
  } i++;  
 }  
 if(h>mid)  
 {  
  for(k=j;k<=high;k++)  
  {  
   b[i]=a[k]; i++;  
  }  
 }  
 else  
 {  
  for(k=h;k<=mid;k++)  
  {  
   b[i]=a[k]; i++;  
  }  
 }  
 for(k=low;k<=high;k++)  
  a[k]=b[k];  
}  
int main()  
{  
 int num,i,b; 
 cout<<"***************************"<<endl;  
 cout<<" MERGE SORT PROGRAM "<<endl;  
 cout<<"***************************"<<endl;  
 cout<<endl<<endl;  
 cout<<"Masukkan Banyak Bilangan: ";cin>>num;  
   cout<<endl;  
 cout<<"Sekarang masukkan "<< num <<" Bilangan yang ingin Diurutkan :"<<endl;  
 for(b=1;b<=num;b++)  
 {  
  cout<<"Bilangan ke-"<<b<<" : ";cin>>a[b] ;  
 }  




 merge_sort(1,num);  
 cout<<endl;  
 cout<<"Hasil akhir pengurutan :"<<endl;  
 cout<<endl;  
 for(i=1;i<=num;i++)  
  cout<<a[i]<<" ";  
 cout<<endl<<endl<<endl<<endl;

   getch();  
}

Dev C++:

lanjutan....
 
lanjutan....
 
Output:





9.Ada beberapa kumpulan data sebagai berikut :
2 8 3 5 6 4 11 1 9
Urutkan kumpulan data di atas menggunakan quick sort serta gambarkan step by step dari sorting tersebut Source Code:
 # include <iostream>
# include <iomanip>
# include <conio.h>
using namespace std;

void q_sort(int[],int,int);

int main ()
{
 int NumList[9]={2,8,3,5,6,4,11,1,9};

 cout<<" Data Sebelum diurutkan: \n";
 for(int d=0;d<9;d++)
 {
 cout<<setw(3)<<NumList[d];
 }
 cout<<"\n\n";
 q_sort(NumList,0,9);
 cout<<" Data setelah diurutkan: \n";
 for(int iii=0;iii<9;iii++)
 cout<<setw(3)<<NumList[iii]<<endl<<endl;

 getch();
}

void q_sort(int numbers[],int left,int right)
{
 int pivot,l_hold,r_hold;
 l_hold=left;
 r_hold=right;
 pivot=numbers[left];
 while(left<right)
 {
 while((numbers[right]>=pivot)&&(left<right))
 right--;
 if(left!= right)
 {
 numbers[left]=numbers[right];
 left++;
 }
 while((numbers[left]<=pivot)&&(left<right))
 {
 left++;
 }
 if (left!=right)
 {
 numbers[right]=numbers[left];
 right--;
 }
 }
 numbers[left]=pivot;
 pivot=left;
 left=l_hold;
 right=r_hold;
 if(left<pivot)
 q_sort(numbers,left,pivot-1);
 if(right>pivot)
 q_sort(numbers,pivot+1,right);
 }

Dev C++:

lanjutan....


Output:
 

10. Urutkan data yaitu [2 8 7 1 3 5 6 4] dengan menggunakan Quick Sort, agar elemen terkecil berada paling depan (urutan pertama), semakin ke belakang semakin besar ! 
Source Code:
# include <iostream>
# include <iomanip>
# include <conio.h>
using namespace std;
void q_sort(int[],int,int);

int main ()
{
 int NumList[8]={2,8,7,1,3,5,6,4};

 cout<<" Data Sebelum diurutkan: \n";
 for(int d=0;d<8;d++)
 {
 cout<<setw(3)<<NumList[d];
 }
 cout<<"\n\n";
 q_sort(NumList,0,8);
 cout<<" Data setelah diurutkan: \n";
 for(int iii=0;iii<8;iii++)
 cout<<setw(3)<<NumList[iii];

 getch();
}

void q_sort(int numbers[],int left,int right)
{
 int pivot,l_hold,r_hold;
 l_hold=left;
 r_hold=right;
 pivot=numbers[left];
 while(left<right)
 {
 while((numbers[right]>=pivot)&&(left<right))
 right--;
 if(left!= right)
 {
 numbers[left]=numbers[right];
 left++;
 }
 while((numbers[left]<=pivot)&&(left<right))
 {
 left++;
 }
 if (left!=right)
 {
 numbers[right]=numbers[left];
 right--;
 }
 }
 numbers[left]=pivot;
 pivot=left;
 left=l_hold;
 right=r_hold;
 if(left<pivot)
 q_sort(numbers,left,pivot-1);
 if(right>pivot)
 q_sort(numbers,pivot+1,right);
 }

Dev C++:
 
lanjutan....
 

Output:
 



Wassalamu'alaikum wr.wb