Selasa, 20 September 2016

sdata minggu pertama

 Struktur Data
mengikuti belajar struktur data di semester III masuk jam 07.00 am, di beri tugas untuk belajar mengti menggunakan 10 jari dan seperti semester lalu kita membuat group yang terdiri dari tiga orang. lalu mengirimkan foto groupnya ke facebook beserta alamat blog masing-masing.

Saya berharap dalam belajar struktur data dapat menguasai materi sesuai dengan target dosen pengampu. Bisa mengikuti pembelajaran selama satu semester ke depan dengan baik. Sehingga bisa mendapatkan ilmu dan nilai sesuai yang di harapkan.

Jumat, 10 Juni 2016

Assalamu'alaikum w.w.,


Hari selasa tanggal 17 Mei 2016perkuliahan alpro minggu ke-10 yaitu tentang : SEARCHING. Seperti pertemuan sebelumnya sebelum dosen datang maka kita sudah harus mempersiapkan/membuka : Rencana Kuliah, PPT, Diktat, E-Book.

Dosennya menjelaskan materi SEARCHING yang didalmnya terdapat Linear Search & Binary Search. Dosennya menjelaskan sesuai dengan 6 kaidah/langkah. Dosennya memberi tugas di kelas, terdapat 2 tugas diantarannya di kumpulkan pada saat perkuliahan selesai 09.00 WIB, dan setelah Solat zuhur 12.00 WIB.

 
 Wassalamu'alaikum w.w.

MENGHITUNG BILANGAN KOMPLEKS

Menghitung Bilangan Kompleks dengan C++ . bilangan kompleks adalah bilangan yang berbentuk

 a + bi \,
di mana a dan b adalah bilangan riil, dan i adalah bilangan imajiner tertentu yang mempunyai sifat         i 2 = −1

Analisis
              Input sebuah bilangan asli.
              Output menjadi bilangan kompleks.

C++
//Program operasi bilangan kompleks
#include<iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;
struct
{
float r1;
float r2;
float i1;
float i2;
}bilangan;
int main(int argc, char** argv)
{
 cout<<"\n____________________________";
 cout<<"\n| OPERASI BILANGAN KOMPLEK |";
 cout<<"\n____________________________\n";
 cout<<"bilangan real 1 = "; cin>>bilangan.r1;
 cout<<"bilangan imajiner 1 = "; cin>>bilangan.i1;
 cout<<endl<<endl;
 cout<<"bilangan real 2 = "; cin>>bilangan.r2;
 cout<<"bilangan imajiner 2 = "; cin>>bilangan.i2;
 cout<<endl<<endl;

cout<<"* PENJUMLAHAN *"<<endl;

cout<<"("<<bilangan.r1<<"+"<<bilangan.i1<<"i) "
    <<" + "<<"("<<bilangan.r2<<"+"<<bilangan.i2<<"i) = "
    <<bilangan.r1 + bilangan.r2 <<"+"<<bilangan.i1 + bilangan.i2<<"i"<<endl;
cout<<endl<<endl;

cout<<"* PENGURANGAN *"<<endl;
cout<<"("<<bilangan.r1<<"+"<<bilangan.i1<<"i) "
    <<" - "<<"("<<bilangan.r2<<"+"<<bilangan.i2<<"i) = "
    <<bilangan.r1 - bilangan.r2 <<"+"<<bilangan.i1 - bilangan.i2<<"i"<<endl;
cout<<endl<<endl;

cout<<"* PERKALIAN *"<<endl;
cout<<"("<<bilangan.r1<<"+"<<bilangan.i1<<"i) "
    <<" * "<<"("<<bilangan.r2<<"+"<<bilangan.i2<<"i) = "
    <<bilangan.r1*bilangan.r2<<"+"<<bilangan.r1*bilangan.i2<<"i"<<" + "
 <<bilangan.r2*bilangan.i1<<"i"<<" - "<<bilangan.i1*bilangan.i2
 <<" = "<<(bilangan.r1*bilangan.r2) - (bilangan.i1*bilangan.i2)<<" + "
 <<(bilangan.r1*bilangan.i2) + (bilangan.r2*bilangan.i1)<<"i"<<
 endl;

}

MENGHITUNG IPK MAHASISWA C++

Menghitung IPK menggunakan program C++ .
Analisis
              1. Input yang akan digunakan disini adalah , menginputkan jumlah SKS dan Input nilai dalam bentuk huruf A-E.
              2. Outpunya akan menghasil nilai IPK berdasar SKS dan Nilai huruf yang telah di inputkan.
algoritma
                     Procedure IPK (input/output matkul[50] ::char , jmk :: integer, bsks::integer)
                    Deklarasi
                         i -> integer
                         bnilai[100]->integer
                         mutu[100]->integer
                     Deskripsi
                           for(i=1;i<=jmk;i++):
                                read(matkul[i]);
                                    if (matkul[i]=='A') then bnilai[i]=4;
                                  else if (matkul[i]=='B') then bnilai[i]=3;
                                  else if (matkul[i]=='C') then bnilai[i]=2;
                                 else if (matkul[i]=='D') then bnilai[i]=1;
                                  else if (matkul[i]=='E') then bnilai[i]=0;
                                     endif
                               read(bsks[i]);
                                        if(bsks[i]>=1 && bsks[i]<=4) then bsks[i]= bsks[i];
                                        endif
                                     mutu[i]=bnilai[i]*bsks[i];
                                      endfor

                                  float tmutu=0, tbobot=0;
                                 for(z=1; z<=jmk; z++):
                                 tmutu+=mutu[z];
                                          tbobot+=bsks[z];
                                           endfor
                                    float ipk;
                                  ipk=tmutu/tbobot;
                                   write(ipk).


c++
#include<iostream>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
using namespace std;

typedef struct{
 char npm[15];
 char nama[50];
 char fakultas[25];
 char prodi[25];
}mahasiswa;
class matakuliah {
 private:
  int bsks[170];
  int bnilai[170];
  int total[170];
  int mutu[170];
   int jmk,i;
 char matkul[170];
 char *cbsks[170];
 char sem;

 public:
  matakuliah();
  void input();
  void output();
};

matakuliah::matakuliah(){
 mahasiswa mhs;
 cout<<"=== Hitung IPK Mahasiswa===\n\n";
 cout<<"Masukkan Nama: "; cin>>mhs.nama;
 cout<<"Masukkan NIM: "; cin>>mhs.npm;
 cout<<"Masukkan Fakultas: "; cin>>mhs.fakultas;
 cout<<"Masukkan Program Studi: "; cin>>mhs.prodi;
 cout<<"Anda Sekarang Semester: "; cin>>sem;
}
void matakuliah::input(){

  int jmk, i, z;

 cout<<"Masukkan Jumlah Mata Kuliah: "; cin>>jmk;
 cout<<"===================================\n\n";
 cout<<"Masukkan Nilai Anda [A..E]\n";
 for(i=1; i<=jmk; i++){
  kondisi:
  cout<<"Mata kuliah ke "<<i<<" : "; cin>>matkul[i];
  if(matkul[i]=='a' || matkul[i]=='A'){
   bnilai[i]=4;
   }
  else if(matkul[i]=='b' || matkul[i]=='B'){
   bnilai[i]=3;
   }
  else if(matkul[i]=='c' || matkul[i]=='C'){
   bnilai[i]=2;
   }
  else if(matkul[i]=='d' || matkul[i]=='D'){
   bnilai[i]=1;
   }
  else if(matkul[i]=='e' || matkul[i]=='E'){
   bnilai[i]=0;
   }
  else{
   cout<<"Masukkan HANYA A,B,C,D,E!!\n";
   goto kondisi;
   }
  kond:
  cout<<"Bobot SKS [1..4]: "; cin>>bsks[i];
  if(bsks[i]>=1 && bsks[i]<=4){
   bsks[i]=bsks[i];
   }
  else{
   cout<<"Masukkan HANYA Angka 1-4!!\n";
   goto kond;
   }
  mutu[i]=bnilai[i]*bsks[i];
  }
 cout<<"\n\nHASIL\n";


}
void matakuliah::output(){
 mahasiswa mhs;
 float tmutu=0, tbobot=0;
 for(int z=1; z<=jmk; z++){
  tmutu+=mutu[z];
  tbobot+=bsks[z];
  }
 float ipk;

 ipk=tmutu/tbobot;
 cout<<"========================\n";
 cout<<"\nNIM: "<<mhs.npm;
 cout<<"\nSemester: "<<sem;
 cout<<"\nJumlah Mata Kuliah: "<<jmk;
 cout<<"\nTotal Mutu: "<<tmutu;
 cout<<"\nTotal SKS: "<<tbobot;
 cout<<"\nTotal IPK: "<<ipk;
 cout<<"\n\n========================";

}
int main(){
 matakuliah matkul;




 matkul.input();
 matkul.output();

 getch();
 return 0;
 }

MENGURUTKAN DATA DENGAN BUBBLE SORT

Masalah tentang mengurutkan angka dengan metode bubble sort. Metode bubble sort ini dilakukan
dengan cara melakukan perbandingan data pertama dengan data setelah nya. Jika data yang di sebelah kiri lebih besar maka data tersebut akan bertukaran tempat yang angka besar berpindah kekanan.


Analisis
          misal diberikan input {9,7,4,1} akan menjadi {1,4,7,9}.

          Proses yang terjadi:
          Tahap ke-1: 7, 9, 4, 1 :: 7, 4, 9, 1 ::7, 4, 1, 9 (ada 3 pertukaran)
          Tahap ke-2: 4, 7, 1, 9 :: 4, 1, 7, 9 (ada 2 pertukaran)
          Tahap ke-3: 1, 4, 7, 9  (ada 1 pertukaran -> proses selesai

Algoritma
           Procedure bubble(input a[0],t,n : integer)
                Deskripsi
                    for(int i=0;i<n;i++)
        for(int j=i;j<n;j++)
            if(a[i]>a[j])
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            endif
        endfor
    endfor


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 output(int a[0],int t,int n){
 for(int i=0;i<n;i++){
  for(int j=i;j<n;j++){
   if(a[i]>a[j]){
    t=a[i];
    a[i]=a[j];
    a[j]=t;
   }
  }
 }
 cout<<"\nSesudah Di Urutkan"<<endl;
 for(int i=0;i<n;i++){
  cout<<a[i]<<" ";
 }cout<<endl;
}
int main(int argc, char** argv) {
 int n,t;
 cout<<"Masukkan Batas : ";
 cin>>n;
 int array[n];
 cout<<"Masukkan data : ";
  for (int j=0;j<n;j++){
  cout<<"Data Ke-"<<j+1<<" = ";
  cin>>array[j];
 }
cout<<endl<<endl;
cout<<"sebelum di urutkan"<<endl;
 for (int j=0;j<n;j++){
  cout<<array[j]<<" ";
 }

  output(array,t,n);
 system("pause");


 return 0;
}

PERKALIAN MATRIKS DENGAN VEKTOR

Masalah dalam Perkalian Matriks (dengan Ordo di input dari pengguna) dengan Sebuah Vektor.
             Didalam perkalian Matriks dengan Vektor ini sebenarnya sama saja dengan mengalikan Dua Buah Matriks. Jumlah kolom dari Matriks harus sama dengan jumlah Baris didalam Vektor agar dapat dilakukan perkalian.



Analisis
               1. Input nya adalah Matriks dengan Ordo 2x3 akan dikali dengan Vektor 3x1.
               2. Lakukan proses perkalian dengan mengalikan baris dalam Matriks dengan Angka di kolom vektor. Misal = (a11*b11)+(a12*b12)+(a13*b13) dan (a21*b11)+(a22*b12)+(a23*b13)
               3. Maka akan menghasilkan matriks baru dengan ukuran 2x1. Sebut saja matriks C, inilah yang akan di outputkan nanti.

Algoritma
           Procedure kali( input/output matriks[ ][ ],vektor[ ],hasil[ ]:: integer)::integer
           Deklarasi
                  i,k :: integer
           Deskripsi
                  for(i=0;i<a;i++)
                  for(k=0;k<b;k++)
                    hasil[i]=hasil[i]+(matriks[i][k])*(vektor[k]);
                  endfor endfor
 for(int i=0;i<a;i++)
    read(hasil[i]);
 endfor

Pengujian dengan data
 Hasil dari perkalian diatas:

Jadi :
C11 = (a11*b11)+(a12*b12)+(a13*b13) dan
C21 = (a21*b11)+(a22*b12)+(a23*b13)
C11 = (
C11 = (3x3) + (2x1) + (1x0) dan
C21= (1x3) + (2x1) + (1x0)

Hasil  Akhirnya :
11
5

 c++
#include <iostream>
#include <iomanip>
/* 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;
 cout<<"Masukkan Baris : ";
 cin>>a;
 cout<<"Masukkan Kolom : ";
 cin>>b;
 int matriks[a][b],vektor[b],hasil[10];


 for(int i=0;i<a;i++){
  for(int j=0;j<b;j++){
   cout<<"Masukkan Data Matriks ke-["<<i+1<<"]["<<j+1<<"] : ";
   cin>>matriks[i][j];
 
  }
 }
 for(int i=0;i<b;i++){
  cout<<"Masukkan Data Vektor ke-["<<i+1<<"] : ";
   cin>>vektor[i];
 
 }
 cout<<"MATRIK A "<<endl;
 for(int i=0;i<a;i++){
  cout<<setw(5);
  for(int j=0;j<b;j++){
  cout<<matriks[i][j]<<setw(5);
  }cout<<endl;
 }
 cout<<endl;

 for(int i=0;i<b;i++){
  cout<<setw(2)<<vektor[i]<<endl;
 }
 for(int i=0;i<2;i++){
  hasil[i]=0;
 }
 cout<<"\nHasil Kali nya = "<<endl;
  for(int i=0;i<a;i++){
  for(int k=0;k<b;k++)
 
   hasil[i]=hasil[i]+(matriks[i][k])*(vektor[k]);
 
 }
 for(int i=0;i<a;i++){
  cout<<hasil[i]<<endl;
 }



 return 0;
}

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 : | 1  3  7 |

| 0  2  5 |

Vaktor : | 3 |

| 1 |

| 4 |

Output -> hasil : | 34 |

| 22 |




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]={1,3,7,0,2,5}, vektor[3]={3,1,4},hasil[2]={0};




kali(matrik,vektor,hasil);

cetakm(matrik);

cetakv(vektor);

cetak(hasil);



return 0;

}















5. outputnya









6. menguji coba data




Matriks :

A = | 1  3  7 |

| 0  2  5 |

Vektor :

B = | 3 |

| 1 |

| 4 |

Perkalian :

C = | a11.b11 + a12.b12 + a13.b13 |

| a21.b11 + a22.b12 + a23.b13 |




= | 1x3 + 3x1 + 7x4 | = | 3 + 3 + 28 |

| 0x3 + 2x1 + 5x4 | | 0 + 2 + 20 |




Hasil = | 34 |


| 22|

Jumat, 13 Mei 2016

Refleksi Pertemuan 9


Assalamualaikum w.r.w.b

pertemuan 9  kali ini kami membahas materi tentang shorting. Sorting adalah materi tentang mengurutkan bilangan yang belum terurut menjadi terurut, kita bisa menggunkan aplikasi Dev C++ dan Raptor.

Pertemuan kali dosen sedikit ngambek sehingga perkuliahanpun 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.


Kunjungin juga blog temen kelompok saya
http://ajiekurniass.blogspot.co.id/
cyberclaza.blogspot.co.id

Wassalmualikum W.r.w.b

Kasus 8.7 (Quick Sort)






Assalamu’alaikum w.r.w.b


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









Selamat mencoba, dan Semoga bermanfaat :-)



Wassalamu’alaikum w..r.w.b

Kasus 8.6 (Merge Sort)





Assalamu’alaikum w.r.w.b


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

muhammadsutiknocronosal.blogspot.com







Output/hasil compiler dari program tersebut :

muhammadsutiknocronosal.blogspot.com


Selamat mencoba, dan Semoga bermanfaat



Wassalamu’alaikum w.r.w.b

Kasus 8.5 (Selection Sort)




Assalamu’alaikum w.w.,


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














Selamat mencoba, dan Semoga bermanfaat ....


Wassalamu’alaikum w.w.

kasus 8.4 (Insertion Sort)


Assalamu’alaikum w.w.,


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






Output/hasil compiler dari program tersebut :





Selamat mencoba, dan Semoga bermanfaat ....


Wassalamu’alaikum w.w.

Kasus 8.3 : (Bubble Sort)






Assalamu’alaikum w.w.,


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













Selamat mencoba, dan Semoga bermanfaat ....


Wassalamu’alaikum w.w.

Kasus 8.2 : Pencarian Biner (Binary Search).






Assalamu’alaikum w,r,w,b


Pada kesempatan ini saya akan memposting Program dari materi SEARCHING AND SORTING , program ini akan dibuat dalam Dev C++ .

Algoritma :



function pencarianBiner(input aray : larik; kunci, low, high : integer) : integer


Deklarasi
ketemu : boolean
i, middle : integer
Deskripsi
ketemu <-- false
while (low <= high) and (not ketemu) do
middle <-- (low+high) div 2
if (kunci = aray[middle]) then ketemu <-- true { data pencarian = data di tengah }
else if (kunci < aray[middle]) then high <-- middle – 1 {data akan dicari lagi di sebelah kiri}
else low <-- middle + 1 {data akan dicari lagi di sebelah kanan}
endif
endwhile
if ketemu then pencarianBiner := middle
else pencarianBiner := -1;
endif


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

#include <iostream>
#define UKURAN 15

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

using namespace std;

void cetakHeader(void){
int i;
cout<<"\nSubscript : \n";
for (i=0;i<=UKURAN-1;i++) cout<<i<<" ";
cout<<"\n";
for (i=1; i <= 4*UKURAN; i++) cout<<"-";
cout<<"\n";
}
void cetakBaris(int b[], int low, int mid, int high){
int i;
for (i=0; i<=UKURAN-1; i++)
if (i<low || i>high) cout<< " ";
else if (i==mid) cout<< "*" <<b[i];
else cout<<b[i] << " ";
cout<<"\n";
}
int pencarianBiner(int b[], int kunciPencarian, int low, int high){
int i, middle;
while (low <= high) {
middle = (low+high) / 2;
cetakBaris(b, low, middle, high);
if (kunciPencarian == b[middle])
return middle;
else if (kunciPencarian < b[middle])
high = middle - 1;
else low = middle + 1;
}
return -1;
}

int main(int argc, char** argv) {
int a[UKURAN], i, kunci, hasil;
for (i=0; i<=UKURAN-1; i++) a[i] = 2*i;
cout<<"Masukkan bilangan antara 0-28 : ";
cin>>kunci;
cetakHeader();
hasil=pencarianBiner(a,kunci,0,UKURAN-1);
if (hasil != -1) cout<<kunci<<" ditemukan pada posisi : "<< hasil;
else
cout<<kunci<<" tidak ditemukan";

return 0;
}




Selamat mencoba, dan Semoga bermanfaat.



Wassalamu’alaikum w.r.w.b

Kasus 8.1 : Pencarian Linear (Linear Search).





Assalamu’alaikum w.w.,



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 : Pencarian Linear (Linear Search).

Algoritma :


function pencarianLinier(input aray : larik; kunci, ukuran : integer) : integer




Deklarasi
ketemu : boolean
i, n : integer
Deskripsi
ketemu <-- false;
n <-- 1
while ((n < ukuran) and (not ketemu)) do
if (aray[n] = kunci) then
ketemu <-- true { data ketemu }
i <-- n { pada posisi ke-i }
endif
else n <-- n+1 { cek data berikutnya }
endwhile
if ketemu then pencarianLinier <-- i { data ketemu pada posisi ke-i }
else pencarianLinier <-- -1 { data tidak ketemu }
endif
end


Berikut ini adalah Gambar Program Flowchart yang menggunakan Aplikasi RAPTOR :












Output/hasil compiler dari program tersebut :








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

#include <iostream>
#define UKURAN 100

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

using namespace std;

int pencarianLinier(int array[], int kunci, int ukuran){
int i;

for (i=0; i<=ukuran-1; ++i)
if (array[i] == kunci)
return i;
return -1;
}

int main(int argc, char** argv) {

int a[UKURAN], x, kunciPencarian, elemen;

for (x=0; x<=UKURAN-1; x++) a[x] = 2*x;
cout<<"Bilangan yang mau dicari : ";
cin>>kunciPencarian;
elemen = pencarianLinier(a,kunciPencarian,UKURAN);
if (elemen != -1)
cout<<kunciPencarian<<" Ditemukan pada posisi elemen ke " << elemen;
else
cout<<kunciPencarian<<" Tidak ada.";

return 0;
}








Selamat mencoba, dan Semoga bermanfaat ....


Wassalamu’alaikum w.r.w.b

Diktat Bab 9

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









Jumat, 06 Mei 2016

Rencana Kuliah Bulan ke- 3

latihan 1 :


 Berikut ini adalah Gambar Program Flowchart yang menggunakan Aplikasi RAPTOR :



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


#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

class Array1D{
 friend ostream& operator<<(ostream&, const Array1D&);
 friend istream& operator>>(istream&, Array1D&);
public:
 Array1D();
 void cetak();
 void geser_kiri();
 void geser_kanan();

private:
 char A[5];
 int posisi;
};

Array1D::Array1D(){
 for(int i=0;i<5;i++)
 A[i]='O';
}

void Array1D::cetak(){
 for(int i=0;i<5;i++)
 cout<<A[i]<<" ";
}

ostream& operator<<(ostream& out, const Array1D& x){
 for(int i=0;i<5;i++)
 out<<x.A[i]<<" ";
 out<<endl;
 return out;
}

istream& operator>>(istream& in, Array1D& x){
 int posisi;
 for (int posisi=1; posisi<=5; posisi++){
 cout<<"\nMasukkan Nilai Array Posisi Ke- : ";
 in>>x.posisi;
 if(posisi >= 0 && posisi <= 5){cout<<"Masukkan Elemen Array : ";
 in>>x.A[posisi-1];
 }
 }
 return in;
}

void Array1D::geser_kanan(){
 int n=5;
 int temp=A[n-1];
 for(int i=n-1;i>=0;i--)
 A[i+1]=A[i];
 A[0]=temp;
}

void Array1D::geser_kiri(){
 int n=5;
 int temp=A[0];
 for(int i=0;i<n;i++)
 A[i]=A[i+1];
 A[n-1]=temp;
}

int main(int argc, char *argv[]){
 Array1D x;
 cout<<"\t\t\tArray Masih Kosong : "<<x;
 cin>>x;

 cout<<"\nIsi Array Saat ini : "<<x;
 x.geser_kiri();
 cout<<"Isi Array Setelah di Geser Kiri  : "<<x;
 x.geser_kanan();
 cout<<"Isi Array Setelah di Geser Kanan : "<<x;
 cout<<"\nUrutan Elemen Pada Indeksnya Saat ini  : "<<x;
 system("PAUSE");

    return 0;
}




Outputnya yaitu :


Latihan 2 :
Kasus : Mencari Median

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 data[5];
    int median,i;

   for(i=0;i<5;i++){
    cout<<"Masukan Data : "<<(i+1)<<"\n";
    cin>>data[i];
   }
    i=i-1;
    median=(i+1)/2;
    cout<<endl<<data[median]<<endl;

 return 0;
}


Kasus : Mencari Mean
Raptor


outputnya 



Latihan 3 :
 Menghilangkan Duplikasi Dari Data Yang Diinputkan.

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

#include <iostream>
#include <cstdlib>
#include <string>

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

using namespace std;

class Array1D{
 friend ostream& operator<<(ostream&, const Array1D&);
 friend istream& operator>>(istream&, Array1D&);
public:
 Array1D();
 void cetak();
 void geser_kiri();
 void geser_kanan();
 void hapus_elemen();

private:
 char A[5];
 int posisi;
};

Array1D::Array1D(){
 for(int i=0;i<5;i++)
 A[i]='O';
}

void Array1D::cetak(){
 for(int i=0;i<5;i++)
 cout<<A[i]<<" ";
}

ostream& operator<<(ostream& out, const Array1D& x){
 for(int i=0;i<5;i++)
 out<<x.A[i]<<" ";
 out<<endl;
 return out;
}

istream& operator>>(istream& in, Array1D& x){
 int posisi;
 for (int posisi=1; posisi<=5; posisi++){
 cout<<"\nMasukkan Nilai Array Posisi Ke- : ";
 in>>x.posisi;
 if(posisi >= 0 && posisi <= 5){cout<<"Masukkan Elemen Array : ";
 in>>x.A[posisi-1];
 }
 }
 return in;
}

void Array1D::geser_kanan(){
 int n=5;
 int temp=A[n-1];
 for(int i=n-1;i>=0;i--)
 A[i+1]=A[i];
 A[0]=temp;
}

void Array1D::geser_kiri(){
 int n=5;
 int temp=A[0];
 for(int i=0;i<n;i++)
 A[i]=A[i+1];
 A[n-1]=temp;
}

void Array1D::hapus_elemen(){
 int posisi;
 cout<<"Pilih Indeks Berapa Yangg akan Di Hapus : ";
 cin>>posisi;
 if(posisi>0 && posisi<=5)
 A[posisi-1]='O';
 else cout<<"Indeks yang Anda Masuukan Salah Karena Indek Hanya Terdiri Dari 1 - 5\n";
}

int main(int argc, char *argv[]){
 Array1D x;
 cout<<"\t\t\tArray Masih Kosong : "<<x;
 cin>>x;

 cout<<"\nIsi Array Saat ini : "<<x;
 x.geser_kiri();
 cout<<"Isi Array Setelah di Geser Kiri  : "<<x;
 x.geser_kanan();
 cout<<"Isi Array Setelah di Geser Kanan : "<<x;
 cout<<"\nUrutan Elemen Pada Indeksnya Saat ini  : "<<x;
 x.hapus_elemen();
 cout<<"\nSetelah dihapus Menjadi : "<<x;

 system("PAUSE");

    return 0;
}



 Outputnya yaitu :