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.

Selasa, 24 Mei 2016

Perkalian Matriks dengan Vektor

Pada kali ini saya membuat perogram tentang perkalian matriks dengan vektor, menggunakan Dev c++ dan reptor, program ini juga dibuat dengan 6 langkan yaitu :

1.  mengerti masalah :

     Bagai mana mengalikan dengan vektor.

2. menentukan input dan output :

    Input -> Matriks : | 3 5 7 |
                                | 2 4 6 |
                 Vaktor :  | 1 |
                               | 7 |
                               | 8 |
    Output -> hasil : | 94 |
                             | 78 |

3. membuat algoritma :
 
   Procedur kali matrik ( input/output i,j matrikvektor)

   Deklarasi :
                 i,j = integer
   Deskripsi :
                for i <- 1 to 2 do
                for j <- 1 to 3 do
                ([i,j]=(]i,j]+a[i,j]*b[i,j])
                endfor
                endfor
                end

4. mengimplementasikan ke bahasa 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;

void kali(int matrik[2][3],int vektor[3],int hasil[2]){
     cout<<"Matrik : \n";
     for(int i=0;i<2;i++){
        for(int j=0;j<3;j++)
           hasil[i]=hasil[i]+(matrik[i][j]*vektor[j]);
     }
}
void cetakm(int hasil[][3]){
     for(int i=0;i<2;i++){
        for(int j=0;j<3;j++)
           cout<<"\t"<<hasil[i][j]<<" ";
           cout<<endl;
     }
}
void cetakv(int vektor[]){
     cout<<"\nVektor : \n";
     for(int i=0;i<3;i++){
        cout<<"\t"<<vektor[i]<<endl;
     }
}

void cetak(int hasil[]){
     cout<<"\nHasil Terakhir : \n";
     for(int i=0;i<2;i++){
         cout<<"\t"<<hasil[i]<<endl;
     }
}

int main(int argc, char** argv) {
    int matrik[2][3]={3,5,7,2,4,6}, vektor[3]={1,7,8},hasil[2]={0};

    kali(matrik,vektor,hasil);
    cetakm(matrik);
    cetakv(vektor);
    cetak(hasil);
 
  return 0;
}





5. outputnya



6. menguji coba data

Matriks :
                A = | 3 5 7 |
                       | 2 4 6 |
Vektor :
               B = | 1 |
                      | 7 |
                      | 8 |
Perkalian :
              C = | a11.b11 + a12.b12 + a13.b13 |
                     | a21.b11 + a22.b12 + a23.b13 |

                  = | 3x1 + 5x7 + 7x8 | = | 3 + 35 + 56 |
                     | 2x1 + 4x7 + 6x8 |    | 2 + 28 + 48 |

Hasil          = | 94 |
                     | 78 |

Jumat, 20 Mei 2016

diktat bab 10









Penyelesaian :


C++


#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[20];
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<<"Nim Mahasiswa : ";
cin>>Ptr_Baru->Nim;
cout<<"Nilai 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();
}





refleksi minggu ke 10



selasa tanggal 17 Mei 2016 Jam 07.00 WIB  perkuliahan ALPRO minggu ke-10 yaitu tentang SEARCHING. Seperti pertemuan sebelumnya sebelum dosen datang maka kita sudah harus mempersiapkan atau membuka Rencana Kuliah, PPT, Diktat, E-Book.
Dosen menjelaskan materi SEARCHING yang didalmnya terdapat Linear Search & Binary Search, menjelaskan sesuai dengan 6 kaidah/langkah. Dosen memberi tugas di kelas, terdapat 2 tugas diantarannya di kumpulkan pada saat perkuliahan selesai 09.00 WIB, dan pada jam 12.00 WIB.
Alhamdulillah di minggu ini tidak diberi tugas dari Diktat maupun E-book, mungkin karena sudah di upload minggu kemarin tentang SEARCHING AND SORTING. minggu ini hanya upload Refleksi saja di Blog. ada tugas TP yaitu presentasi di depan Mentor , agar tahu sudah sejauh mana TP kelompok. Batas penilaian hari Sabtu, tanggal 21, jam 12.00 WIB.

How to solve #5



Kasus 5.1

E-Book (How To Solve It By Computer) = Algorithm 5.1 The Two-Way Merge.


Algoritma :

if a[m]<b[n] then a[m+1]:=b[n+1]:=a[m];
i:=1;
j:=1;
nm:= n+m;
for k:= 1 to nm dobegin {merge next element }
if a[i]<b[j] thenbeginc[k]:=a[i];
i:=i+1end elsebeginc[k]:=b[j];
j:=j+1end
end
Program dengan C++ :

#include <iostream>
#include <cstdlib>

using namespace std;

int data[100];

void mergeSort(int awal, int mid, int akhir){
cout<<endl;
int temp[100], tempAwal = awal, tempMid = mid, i = 0;


while(tempAwal < mid && tempMid < akhir){
if(data[tempAwal] < data[tempMid])
temp[i] = data[tempAwal],tempAwal++;
else
temp[i] = data[tempMid],tempMid++;
i++;
}
while(tempAwal < mid) //kalau masih ada yang sisa
temp[i] = data[tempAwal],tempAwal++,i++;
while(tempMid < akhir)
temp[i] = data[tempMid],tempMid++,i++;
for(int j=0,k=awal;j<i,k<akhir;j++,k++) //mengembalikan ke array semula, tapi
cout<<data[k]<<' '<<temp[j]<<endl, data[k] = temp[j]; //sudah urut
}

void merge(int awal, int akhir) //membagi data secara rekursif{
if(akhir-awal != 1){
int mid = (awal+akhir)/2;
merge(awal, mid);
merge(mid, akhir);
mergeSort(awal, mid, akhir);
}
}

int main(){
int n;
cout<<"Masukan banya data = ";cin>>n;
cout<<"Masukan data yang akan di susun = ";
for(int i=0;i<n;i++)
cin>>data[i];
merge(0,n);
for(int i=0;i<n;i++)
cout<<data[i]<<' ';

return 0;
}

Kasus 5.2

E-Book (How To Solve It By Computer) = Algorithm 5.2 Sorting By Selection.


Algoritma:

Selection Sort

Algoritma ini mudah diterjemahkan ke dalam program computer tetapi memiliki kekurangan yaitu sort dengan menggunakan metode Seleksi membutuhkan ruang di memori untuk meyimpan 2 daftar lengkap.
Jika memiliki satu daftar nama dan meletakkan dalam urutan berdasarkan huruf bisa menggunakan pemdekatan umum sebagai berikut :


1. Temukan atau cari nama yang pertama kali datang dalam urutan huruf dan tulis di sheet kedua
2. Tandai nama yang keluar dari daftar asli
3. Lanjutkan perputaran ini sampai semua nama di daftar semula telah di coret dan ditulis di daftar kedua dimana di bagian daftar yang kedua ini nama-nama sudah terurut berdasarkan huruf.
Program C++ :

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

int data[100],data2[100];
int n;

void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j–)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
}
cout<<”bubble sort selesai!”<<endl;
}

void exchange_sort()
{
for (int i=0; i<n-1; i++)
{
for(int j = (i+1); j<n; j++)
{
if (data [i] > data[j]) tukar(i,j);
}
}
cout<<”exchange sort selesai!”<<endl;
}

void selection_sort()
{
int pos,i,j;
for(i=0;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);
}

cout<<”selection sort selesai!”<<endl;
}

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;
}
cout<<”insertion sort selesai!”<<endl;
}

void QuickSort(int L, int R) //the best sort i’ve ever had
{
int i, j;
int mid;

i = L;
j = R;
mid = data[(L+R) / 2];

do
{
while (data[i] < mid) i++;
while (data[j] > mid) j–;

if (i <= j)
{
tukar(i,j);
i++;
j–;
};
} while (i < j);

if (L < j) QuickSort(L, j);
if (i < R) QuickSort(i, R);
}

void Input()
{
cout<<”Masukkan jumlah data = “; cin>>n;
for(int i=0;i<n;i++)
{
cout<<”Masukkan data ke-”<<(i+1)<<” = “; cin>>data[i];
data2[i] = data[i];
}
}

void Tampil()
{
cout<<”Data : “<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<” “;
}
cout<<endl;
}

void AcakLagi()
{
for(int i=0;i<n;i++)
{
data[i] = data2[i];
}
cout<<”Data sudah teracak!”<<endl;
}

void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<”Program Sorting Komplit!!!”<<endl;
cout<<”*********************************************”<<endl;
cout<<” 1. Input Data”<<endl;
cout<<” 2. Bubble Sort”<<endl;
cout<<” 3. Exchange Sort”<<endl;
cout<<” 4. Selection Sort”<<endl;
cout<<” 5. Insertion Sort”<<endl;
cout<<” 6. Quick Sort”<<endl;
cout<<” 7. Tampilkan Data”<<endl;
cout<<” 8. Acak Data”<<endl;
cout<<” 9. Exit”<<endl;
cout<<” Pilihan Anda = “; cin>>pil;
switch(pil)
{
case 1:Input(); break;
case 2:bubble_sort(); break;
case 3:exchange_sort(); break;
case 4:selection_sort(); break;
case 5:insertion_sort(); break;
case 6:QuickSort(0,n-1);
cout<<”quick sort selesai!”<<endl;
break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}
getch();
}while(pil!=9);
}


Kasus 5.3




E-Book (How To Solve It By Computer) = Algorithm 5.3 Sorting By Exchange.

Soal

Diberikan urutan yang tidak beraturan dari kumpulan nilai n gunakan urutan dengan emnggunakan sorting by exchange

Penyelesaian :
Bubble Sort (Gelembung) merupakan metode pertukaran yang alur logikanya mirip dengan gelembung yaitu dengan cara membandingkan indeks Array yang pertama dengan indeks Array berikutnya secara terus menerus dan bergantian. Namun cara ini kurang efektif karena meskipun data sudah terurut proses perulangan yang terjadi akan terus berlangsung sampai batas perulangan itu berakhir. Ini adalah contoh alur alogaritmanya dalam kode program.

for (c=0; c<7; c++)
{ for (x=0; x<7; x++)
{if (menu[x]menu[x+1])
{term=menu[x];
menu[x]=menu[x+1];
menu[x+1]=term;
}
else {
menu[x]=menu[x];
}}}

Selection Sort (Maksimum/Minimum) merupakan metode pertukaran yang mencari nilai Maksimum/Minimum sekelompok data array yang nantinya nilai yang paling ujung akan diisolasikan dan tidak disertakan pada proses selanjutnya. Perhatikan contoh code berikut ini.

for(y=0; y<9; y++)
{max=0;
for (x=1; x<=b; x++)
{ if (A[x]>A[max])
{
max=x;
} }
if (A[max]>A[b])
{ term=A[b];
A[b]=A[max];
A[max]=term;
b--;
} else
{
b--;
}}


Insertion Sort (Sisip) meripakan metode pengurutan dengan cara menyisipkan nilai pada array pada posisi yang tepat. Untuk lebih jelasnya silakan lihat code dibawah ini.

for (k=1; k<9; k++)
{
term=L[k];
j=k-1;
while (term<=L[j])
{
L[j+1]=L[j];
j--;
}
if ((term >= L[j]) || (j=1))
{
L[j+1]=term;
}
else
{
L[j+1]=L[j];
L[j]=term;
}


Kasus 5.4



E-Book (How To Solve It By Computer) = Algorithm 5.4 Sorting By Insertion.


Algoritma :

1. Membangun sebuah array [1 .. n] elemen n.
2. Menemukan minimum dan meletakkannya di tempat untuk bertindak sebagai sentinel :
3. Sementara masih ada unsur-unsur yang akan dimasukkan di bagian memerintahkan melakukan
a. Pilih x elemen berikutnya untuk dimasukkan
b. Sementara x kurang dari sebelumnya unsur melakukan
c. Insert x pada posisi saat ini
for i:=2 to n do
begin {search for x's position then insert it}
j:=1; x:=a[i];
while x>a[j] do j:=j+1
for k:= i down to j+1 do a[k]:= a[k-1];
a[j]:=x
end


Program C++ :

#include <iostream.h>


void main(){
int data[100];
int a,b,c,d,x;
int temp;


cout<<"PROGRAM SORTING DATA "<<endl;
cout<<"---------------------------------------------"<<endl;
cout<<"Masukkan jumlah data : ? ";cin>>x;


for(d=1;d<=x;d++)
{
cout<<"Data ke-"<<d<<" = ";cin>>data[d];
}
cout<<"\nData Sebelum Diurutkan \n";
for(d=1;d<=x;d++){
cout<<"\t"<<data[d];
}
for(a=0;a<x;a++){
for(b=0;b<x;b++)
if(data[b]>= data[b+1])
{
temp=data[b];
data[b]=data[b+1];
data[b+1]=temp;
}
}
cout<<"\n\nData setelah diurutkan :\n";
for(c=0;c<x;c++)
cout<<"\t"<<data[c];
cout<<"\n\n---------------------------------------------"<<endl
}
system("PAUSE");
return EXIT_SUCCESS;
}


Kasus 5.7



E-Book (How To Solve It By Computer) = Algorithm 5.7 Binary Search.


Algoritma :

Pencarian pada data yang telah terurut menunjukkan kinerja yang lebih baik daripada pada data yang masih acak, hal ini karena dapat segera diketahui bahwa x tidak terdapat dalam larik bila ditemukan elemen yang lebih besar dari x.
Binary searching atau biasa disebut pencarian bagi dua merupakan metode pencarian yang paling efisien untuk data yang telah terurut. Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat.
Langkah-langkah pencarian bagi dua untuk data yang telah terurut secara ascending:
1. Bagi dua elemen larik yang telah terurut secara ascending, dengan cara menentukan elemen awal pencarian, elemen akhir pencarian dan elemen tengahnya.
- elemen awal pencarain (lo) = 1
- elemen akhir pencarain (hi) = n
- elemen tengah = (lo + hi) div 2

Misalnya terdapat larik L dengan 9 elemen yang telah terurut secara ascending seperti dibawah ini, maka kita akan menentukan elemen awal, akhir dan tengah pencariannya.

3
6 7 9 10
15 20 30 45

Lo = 1
Hi = 9
Mid = ( 1 + 9 ) div 2 = 5
2. Jika elemen yang dicari ada pada elemen di mid, maka ketemu.
3. Jika elemen yang ada di mid > elemen yang dicari, maka hi berubah
Hi = mid - 1
4. Jika elemen yang ada di mid < elemen yang dicari, maka lo berubah Lo = mid + 1 5. Ulangi langkah-langkah tersebut sampai data yang dicari ditemukan atau sampai elemen telah habis dibagi. Contoh: 3 6 7 9 10 15 20 30 45 Misalnya data yang dicari (x) = 7 1. lo = 1 hi = 9 mid = (1 + 9) div 2 = 5 L[5] = 10 L[mid] > x, maka hi berubah.
2. hi = mid -1 = 5 – 1 = 4
lo = 1
mid = ( 1 + 4 ) div 2 = 2
L[2] = 6
L[mid] < x, maka lo berubah 3. lo = mid +1 = 2 + 1 = 3 hi = 4 mid = ( 3 + 4 ) div 2 = 3 L[3] = 7 L[mid] = x, maka data ditemukan Pseudocode Pencarian bagi dua: Algoritma bin_searching; Var lo,hi,mid,n,x,idx :integer; ketemu : boolean; L : array [1..100] of integer; Begin {misalnya telah terdapat sekumpulan data yng tersimpan di dalam larik L} loß 1; hi ß n; ketemu ß false; while (not ketemu) and (lo <= hi) do midß (lo + hi ) div 2; If L[mid] = x then ketemu ß true Else If ( L[mid] > x ) then
lo ß mid + 1
Else
hi ß mid – 1;
End if
End if
End while
If (ketemu) then
Idx ß mid
Else
Idx ß -1;
End if
End.

Senin, 16 Mei 2016

Pembahasan Materi Sorting : Tentang Insertion Sort

Assalamu’alaikum w.r,w,b


Pada kesempatan ini saya membuat Program dari materi SEARCHING AND SORTING , program ini dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Insertion Sort.

Menyusun Algoritma :
procedure insertion_sort(input/output data:larik; input n:integer)

Deklarasi:
a,i, j, temp : int

Deskripsi:
for (int i = 0; i < a; i++) {fungsi Perulangan jika i < a maka i akan terus bertambah}
{
temp = data [i];

j = i-1;
do(j > 1) {fungsi perulangan menggunakan do while yg kondisinya jika j > 1}
{

data [j+1] = data [j];

j = j-1;
}

while (temp <= data [j]);

if (temp >= data [j]) {fungsi percabangan yg kondisinya jika temp >= data [j] maka data [j+1] = temp}
{
data [j+1] = temp;
}

else {mengganti tempat elemen saat ini data[j+1] dengan elemen data[j] dan element data [j] ditukar dengan element temp}
{data [j+1] = data [j];


data [j] = temp;
}
}

Pengimplementasian Program Flowchart yang menggunakan RAPTOR :












Pengimplementasian Program C++ yang Menggunakan Dev C++ :

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

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

using namespace std;

class Sorting {
      friend istream& operator>>(istream& in, Sorting& a);
      friend ostream& operator<<(ostream& out, Sorting& a);
public:
       void baca_data();
       void cetak_data();
       void buble_sort();
       void insertion_sort();
       void selection_sort();
private:
        void minimum(int , int, int&);
        void tukar (int&, int&);
        int data[10], n;
};
  istream& operator>>(istream& in, Sorting& a) {
    cout<<"Banyak data : ";
    in>>a.n;
    for (int i = 0; i < a.n; i++) {
    cout<<"Data ke-" <<i+1<< " : ";
    in>>a.data[i];
}
  return in;
}
  ostream& operator<<(ostream& out, Sorting& a) {
    for (int i = 0; i < a.n; i++)
    out<<a.data[i] << " ";
    out<<"\n";
  return out;
}
  void Sorting::tukar (int &a, int &b){
       int temp;
       temp = a;
       a = b;
       b = temp;
  }
  void Sorting::insertion_sort(){
       int i, j, temp;
       cout<<"Data pertama sudah ada ditangan kiri, yaitu : " << data[0] << '\n';
       for(j = 1; j < n; j++){
           temp = data[j];
           cout<<"\nData ke-" << j+1 << " yaitu " << data[j] << " diambil dari papan\n";
           cout<<"Dilakukan penggeseran elemen :\n";
       for(i = j - 1; (i >= 0) && (data[i] > temp); i--){
           cout<<"data pd posisi ke-[" << i+1 << "] digeser ke posisi [" << i+2 << "]\n";
           data[i+1] = data[i];
       }
        cout<<"Data baru masuk pada posisi ke-[" << i+2 << "]\n";
        data[i+1] = temp; //Insert key into proper position
        cout<<"Data saat ini adalah : ";
        for (int k=0; k<=j; k++) cout << data[k] << " ";
        cout<<endl;
            getch();
            }
  }
int main(int argc, char** argv) {
    Sorting angka;
    cin>>angka;
    angka.insertion_sort();
    cout<<"\nHasil akhir adalah : \n";
    cout<<angka;

 return 0;
}




Output/hasil compiler dari program tersebut :




Langkah-Langkah Pengerjaan:

Terdapat angka yang acak di bawah ini :

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

-Cara pengerjaanya pertama-tama kita menggambil angka pertama di sebelah kiri yaitu [8]

[8]

-Kemudian kita ambil angka ke dua yaitu [6] , karena angka [6] lebih kecil dari [8], kita ditaruh di
sebelah kiri:

[6, 8]

-Kemudian kita ambil angka ke tiga yaitu [7], karena angka ke [7] < [8] dan [7] > [6], maka kita taruh di tengah-tengah antara angka [6] dan [8], seperti di bawah ini:



[6,7,8]


-Selanjutya kita ambil angka ke empat yaitu [4] karena tiga lebih kecil dari angka yang kita cari sebelumnya, maka angka [4] kita taruh di paling kiri, seperti di bawah ini:


[4,6,7,8]


-Selanjutnya kita ambil angka ke lima yaitu [5], karena angka [5] < [6,7,8] dan [5] > [4] maka kita taruh seperti di bawah ini:


[4,5,6,7,8]


-Selanjutya kita ambil angka ke enam yaitu [2] karena [2] lebih kecil dari angka yang kita cari sebelumnya, maka angka [2] kita taruh di paling kiri, seperti di bawah ini:


[2,4,5,6,7,8]


-Selanjutya kita ambil angka ke tujuh yaitu [3], karena [3] < [4,5,6,7,8] dan [3] > [2] maka kita taruh seperti di bawah ini:


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

-Selanjutya kita ambil angka ke delapan yaitu [1], karena [1] < [2,3,4,5,6,7,8] maka kita taruh seperti di bawah ini:


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

Selesai....,  karena angka-angka sudah berurut, dan begitulah langkah-langkah pengerjaannya. terimakasih.

Wassalamu’alaikum w.w.

Untuk pembahasan Bubble Sort silakan kunjungi link blog teman kelompok saya   :


Untuk pembahasan Selection Sort silakan kunjungi link blog teman kelompok saya :

Jumat, 13 Mei 2016

Refleksi Pertemuan 9



Pada kesempatan ini saya akan sedikit curhat tentang pertemuan 9, di pertemuan ini kami membahas materi shorting. Sorting adalah materi tentang mengurutkan bilangan yang belum terurut menjadi terurut, kita bisa menggunkan  Dev C++ dan Raptor.

Pertemuan ini sedikit menegangkan, karena dosen agak ngambek sehingga perkuliahannya di ganti menjadi jam 18.30. Setelah perkuliahan di mulai dosen memberikan kami materi sorting dan sedikit panjang menjelaskannya, setelah selesai menjelaskan ada beberapa orang yang di suruh maju untuk menyelesaikan soal yang ada di papan tulis.

Perkuliahan pun selesai,  kami di beri tugas yang banyak banget, deadline sabtu jam 12.00 siang. Sehingga saya sangat buru-buru mengerjakan tugas yang di berikan, jadi saya mohon maaf jika banyak yang salah dalam postingan saya.

Sekian curhatan dari hati saya semoga Allah melancarkan semua hal yang kita kerjakan. Amin....

Diktat Bab 9


Pada kesempatan kali ini, saya akan membahas kasus-kasus pada diktat bab 9. Langsung saja.

Workshop

Kasus 1

Algoritma

deklarasi
A[maks][maks],baris,kolom::integer
deskripsi
read (baris,kolom)
for i <-- 1 to n -1 do
for j <-- 1 to n-1 do
baris,kolom := A[i][j]
for i <-- 1 to n-1 do
for j <-- 1 to n-1 do
for z <-- 1 to n-1 do
hasil := A[i][j]*2[m]
endfor
endfor
endfor

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;
}











Kasus 2




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;

}

}











Flowchart















Kasus 3




C++




#include <iostream>

#include <conio.h>

#include <cstdlib>




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;

}

return 0;

}













Flowchart














Kasus 4




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;

}















Kasus 5




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;

}

}















Flowchart












































Kasus 8.7 (Quick Sort)


Pada kesempatan ini saya akan memposting Program dari materi SEARCHING AND SORTING , program ini akan dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Tentang : Quick Sort.

Algoritma :


procedure quick_sort(output data : larik; input L, R : integer)


Deklarasi
i, j, p : integer
Deskripsi
p <-- data[(L+R) div 2]
i <-- L
j <--R
{ mulai membuat partisi }
while (i<=j) do
while (data[i] < p) do i <-- i+1 endwhile
while (data[j] > p) do j <-- j -1 endwhile
if (i<=j) then
tukar(data[i], data[j])
i <-- i+1
j <-- j-1
endif
endwhile
if (L < j) then quick_sort(data,L,j) endif
if (i < R) then quick_sort(data,i,R) endif


Dan yang ini Gambar Program C++ 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;

void masuk_data(int A[], int n) {
int i;
for (i = 0; i < n; i++) {
cout << "Data ke-%d : ",i+1;
cin >> A[i];
}
}
void cetak_data(const int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout << "%d ",A[i];
cout << "\n";
}
void tukar (int *a, int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void quick_sort(int data[], int L, int R) {
int i, j, p;
p = data[(L+R) / 2];
i = L;
j = R;
while (i<=j) {
while (data[i] < p) i++;
while (data[j] > p) j--;
if (i<=j){
tukar(&data[i], &data[j]);
i++;
j--;
}
}
if (L < j) quick_sort(data,L,j);
if (i < R) quick_sort(data,i,R);
}

int main(int argc, char** argv) {
int data[10], n;

cout << "Banyak data : ";
cin >> n;
masuk_data(data,n);
quick_sort(data,0,n-1);
cetak_data(data,n);

return 0;
}


Kasus 8.6 (Merge Sort)


Pada kesempatan ini saya akan memposting Program dari materi SEARCHING AND SORTING , program ini akan dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Tentang : Merge Sort.


Dan yang ini Gambar Program C++ 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;

typedef int larik[10];
void masuk_data(int A[], int n){
int i;
for (i = 0; i < n; i++){
cout << "Data ke-%d : ",i+1;
cin >> A[i];
}
}
void cetak_data(const int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout << "%d ",A[i];
cout << "\n";
}
void merge(larik a, int kiri, int tengah, int kanan){
int bagianKiri, posTemp, banyakElemen, i;
larik temp;
bagianKiri = tengah - 1;
posTemp = kiri;
banyakElemen = kanan - kiri + 1;
while ((kiri <= bagianKiri) &&(tengah <= kanan))
if ((a[kiri] <= a[tengah])){
temp[posTemp] = a[kiri];
posTemp = posTemp + 1;
kiri = kiri + 1;
}
else{
temp[posTemp] = a[tengah];
posTemp = posTemp + 1;
tengah = tengah + 1;
}
/* kopi bagian kiri */
while ((kiri <= bagianKiri)) {
temp[posTemp] = a[kiri];
posTemp = posTemp + 1;
kiri = kiri + 1;
}
/* kopi bagian kanan */
while ((tengah <= kanan)) {
temp[posTemp] = a[tengah];
posTemp = posTemp + 1;
tengah = tengah + 1;
}
/* kopi kembali ke array asal */
for (i = 1; i <= banyakElemen; i++){
a[kanan] = temp[kanan];
kanan = kanan - 1;
}
}
void merge_sort(larik A, int kiri, int kanan){
int tengah;
if ((kiri < kanan)){
tengah = (kiri + kanan) / 2;
merge_sort(A, kiri, tengah);
merge_sort(A, tengah + 1, kanan);
merge(A, kiri, tengah + 1, kanan);
}
}

int main(int argc, char** argv) {
int n;
larik data;
cout << "Berapa data array : ";
cin >> n;
masuk_data(data, n);
cetak_data(data, n);
merge_sort(data, 0, n-1);
cetak_data(data, n);

return 0;
}



m




Output/hasil compiler dari program tersebut :

Kasus 8.5 (Selection Sort)


Pada kesempatan ini saya akan memposting Program dari materi SEARCHING AND SORTING , program ini akan dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Tentang : Selection Sort.
Algoritma :
Procedure selection_sort(output A : larik; input n : integer)


Deklarasi
i, t : integer
Deskripsi
for i <-- 1 to n do
minimum(A, i, n, t);
tukar(A[i], A[t]); {tukar tempat elemen saat ini j dengan elemen terkecil yang ditemukan t}
endfor


Berikut ini adalah Gambar Program Flowchart yang menggunakan Aplikasi RAPTOR :


















Output/hasil compiler dari program tersebut :





Dan yang ini Gambar Program C++ yang Menggunakan Aplikasi Dev C++ :

#include <iostream>
#include <cstdlib>

using namespace std;

void baca_data(int A[], int n){
int i;
for (i = 0; i < n; i++){
cout << "Data ke-%d : ",i+1);
cin >> A[i]);
}
}
void cetak_data(const int A[], int n){
int i;
for (i = 0; i < n; i++)
cout << "%d ",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]);
}
}

int main(int argc, char** argv) {
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;
}
m

kasus 8.4 (Insertion Sort)


Pada kesempatan ini saya akan memposting Program dari materi SEARCHING AND SORTING , program ini akan dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Tentang : Insertion Sort.
Algoritma :

procedure insertion_sort(input/output data:larik; input n:integer)


Deklarasi
k, j, temp : integer
Deskripsi
for k <-- 2 to n do
temp := data [k];
j := k-1;
while (temp <= data [j]) and (j > 1) do
data [j+1] := data [j];
j := j-1;
endwhile
if (temp >= data [j]) then data [j+1] := temp
else
data [j+1] := data [j];
data [j] := temp;
endif
endfor


Berikut ini adalah Gambar Program Flowchart yang menggunakan Aplikasi RAPTOR :















Dan yang ini Gambar Program C++ yang Menggunakan Aplikasi Dev C++ :

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

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

using namespace std;

class Sorting {
friend istream& operator>>(istream& in, Sorting& a);
friend ostream& operator<<(ostream& out, Sorting& a);
public:
void baca_data();
void cetak_data();
void buble_sort();
void insertion_sort();
void selection_sort();
private:
void minimum(int , int, int&);
void tukar (int&, int&);
int data[10], n;
};
istream& operator>>(istream& in, Sorting& a) {
cout<<"Banyak data : ";
in>>a.n;
for (int i = 0; i < a.n; i++) {
cout<<"Data ke-" <<i+1<< " : ";
in>>a.data[i];
}
return in;
}
ostream& operator<<(ostream& out, Sorting& a) {
for (int i = 0; i < a.n; i++)
out<<a.data[i] << " ";
out<<"\n";
return out;
}
void Sorting::tukar (int &a, int &b){
int temp;
temp = a;
a = b;
b = temp;
}
void Sorting::insertion_sort(){
int i, j, temp;
cout<<"Data pertama sudah ada ditangan kiri, yaitu : " << data[0] << '\n';
for(j = 1; j < n; j++){
temp = data[j];
cout<<"\nData ke-" << j+1 << " yaitu " << data[j] << " diambil dari meja\n";
cout<<"Dilakukan penggeseran elemen :\n";
for(i = j - 1; (i >= 0) && (data[i] > temp); i--){
cout<<"data pd posisi ke-[" << i+1 << "] digeser ke posisi [" << i+2 << "]\n";
data[i+1] = data[i];
}
cout<<"Data baru masuk pada posisi ke-[" << i+2 << "]\n";
data[i+1] = temp; //Insert key into proper position
cout<<"Data saat ini adalah : ";
for (int k=0; k<=j; k++) cout << data[k] << " ";
getch();
}
}
int main(int argc, char** argv) {
Sorting angka;
cin>>angka;
angka.insertion_sort();
cout<<"\nHasil akhir adalah : \n";
cout<<angka;

return 0;
}


Kasus 8.3 : (Bubble Sort)


Pada kesempatan ini saya akan memposting Program dari materi SEARCHING AND SORTING , program ini akan dibuat dalam bentuk Flowchart dan C++ . Program yang akan di buat yaitu : Tentang : Bubble Sort.

Algoritma :



Procedure Bubble_Sort (input/output x : larik, input n : byte)


Deklarasi
larik = array [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
tukar(x[i], x[j])
endif
endfor
endfor


Berikut ini adalah Gambar Program Flowchart yang menggunakan Aplikasi RAPTOR :











Output/hasil compiler dari program tersebut :





Dan yang ini Gambar Program C++ 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;

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 buble_sort (int x[], int n){
int i, j;
for (i = 0; i<n-1; i++)
for (j = i+1; j<n; j++)
if (x[i] > x[j]) tukar(&x[i], &x[j]);
}

int main(int argc, char** argv) {
int data[10], n;
cout<<"Banyak data : ";
cin>>n;
baca_data(data,n);
cetak_data(data,n);
buble_sort(data,n);
cetak_data(data,n);

return 0;
}