Rabu, 14 September 2016

refleksi strukur data #1

assalamualaikum
kita panjatkan puja dan puji syukur kehadirat allah swt, sehingga kita masih diberikan sehat untuk menjalani hidup ini. khususnya saya yang masih bisa melanjutkan kuliah di semester tiga ini.

minggu pertama ini di matkul struktur data dosenya tak asing lagi, desen yang telah mengajar kami di semester dua algoritma pemrograman Drs. Wahyu Pujiyono M.Kom. kesan-kesan di minggu ini  sih masih santai gitu maklumlah awal masuk masih kebawa males :-)).

di awal pertemuan mata kuliah ini saja saya merasa harus memakai pemahaman yang cukup dalam apalagi pertemuan besok besoknya lagi,walaupun begitu semoga kita selalu mendapat kemudahan dan kelancaran.amin

segitu saja refleksi kali ini.
wassalamualaikum

Senin, 23 Mei 2016

perkalian matrik






  • masalah
    menghitung perkalian matrik dengan vektor. misal:
  • analisis

  • cek baris atau kolom yang jumlahnya sama antara matrik yang ingin dikalikan.

  •  dilihat dari contoh diatas jumlah kolom matrik a sama dengan baris vektor b.

  •  maka kita akan mengkalikan antara baris dan kolom tersebut

  •  hasil akan dihitung dengan perkalian baris matrik satu dengan kolom matrik satunya
  • uji coba data

  • dari misal diatas akan kita cari hasil dari perkalian tersebut

  •  h1=a11*b1+a12*b2+a13*b3=1*1+5*2+4*3=1+10+12=23

  •  h2=a21*b1+a22*b2+a23*b3=3*1+1*2+2*3=3+2+6=12
  • flowchart
  • c++


  • #include <iostream>
    using namespace std;
    void kali(int matrik[2][3],int vektor[3],int hasil[2]){
    for(int i=0;i<2;i++){
    for(int k=0;k<3;k++)
    hasil[i]=hasil[i]+(matrik[i][k]*vektor[k]);
    }
    }
    void cetakm(int hasil[][3]){
    for(int i=0;i<2;i++){
    for(int j=0;j<3;j++)
    cout<<hasil[i][j]<<" ";
    cout<<endl;
    }
    }
    void cetakv(int vektor[]){
    for(int i=0;i<3;i++){
    cout<<vektor[i]<<endl;
    }
    }
    void cetak(int hasil[]){
    for(int i=0;i<2;i++){
    cout<<hasil[i]<<endl;
    }
    }
    int main(int argc, char** argv) {
    int matrik[2][3]={1,5,4,3,1,2}, vektor[3]={1,2,3},hasil[2]={0};
    kali(matrik,vektor,hasil);
    cout<<"matrik A\n";
    cetakm(matrik);
    cout<<"vektor b\n";
    cetakv(vektor);
    cout<<"hasil kali\n";
    cetak(hasil);
    return 0;
    }

  • program
  • photo tugas
  • Jumat, 13 Mei 2016

    sorting menggunakan metode insertion


    • permasalahan
      mengurutkan data dengan metode insertion.
      misal:
      0 0 0 0 → 4 → 4 0 0 0
      4 0 0 0 → 1 → 1 4 0 0
      1 4 0 0 → 2 → 1 2 4 0
      1 2 4 0 → 3 → 1 2 3 4

    • analisis
      • untuk data pertama masukan ke indek pertama sebagai acuan berikutnya
      • masukkan input, cek nilai diurutkan dari depan apakah ada nilai yang lebih besar dari yang diinputkan maka catat posisinya dan geser posisi tersebut dan setelahnya. kemudian sisipkan inputan tersebut di posisi yang dicatat.
      • ulangi langkah kedua sampai selesai inputnya.
    • flowchart raptor
      gsr(untuk menggeser indek)

      main

      po(mencari posisi)

      t(untuk menampilkan)
    • c++
    #include <iostream>
    using namespace std;
    int d[8]={0};

    int po(int a){
    int p=-1;
    for(int i=0;i<8;i++){
    if(a>d[i]&&d[i]!=0){
    p=i;}
    }
    return p+1;
    }

    t(){
    for(int i=0;i<8;i++){
    cout<<d[i]<<" ";
    }
    cout<<endl;
    }
    void gsr(int a){
    int t;
    for(int i=a;i<7;i++){
    t=d[i+1];
    d[i+1]=d[a];
    d[a]=t;

    }
    }
    int main(){
    int in;
    for(int i=0;i<8;i++){
    cin>>in;

    if(po(in)<=i) {
    gsr(po(in));
    d[po(in)]=in;
    } else
    d[i]=in;
    t();
    }
    }
    • program

    sorting menggunakan metode bubble sort


    • permasalah
      mengurutkan data acak menggunakan metode bubble sort
      metodenya jika nilai sebelah kanan lebih kecil tukar pisisi keduanya.
      misal:
      2 3 1 → (2,3) tak perlu di tukar
      2 3 1 → tukar(3,1) sudah di akhir mulai dari depan lagi
      2 1 3 → tukar(2,1)
      1 2 3 → selesai
    •  analisis
      melakukan perulangan dua tingkat sepanjang array. ditingkat terbawah perulangan dilakukan pengecekan disetiap indek dengan sampingnya apakah lebih besar maka tukarkan posisi keduanya
    • flowchart raptor
      bs(bubble sort proses)

      input

      main

      tampil

      tukar
    • c++
    • #include <iostream>
      using namespace std;
      void tampil(int d[],int n){
      for(int i=0;i<n;i++)
      cout<<d[i]<<" ";
      cout<<endl;
      }
      void tukar(int &a,int &b){
      int t=a;
      a=b;
      b=t;
      }
      void bs(int d[],int n){
      for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
      if(d[j]>d[j+1]) tukar(d[j],d[j+1]);
      }
      tampil(d,n);
      }
      }
      int main(int argc, char** argv) {
      int d[]={9,2,6,1,8,5,4,0,3,7};
      int n=sizeof d/sizeof(int);
      tampil(d,n);
      bs(d,n);
      return 0;
      }
    • program
    • LINK LAINNYA
      -  selection sort(gieovani w p)
      -  insertion sort

    Jumat, 06 Mei 2016

    6.5 mencari modus dalam sekumpula data


    • permasalahan
      mencari modus dari sekumpulan data
    • analisis
      • mencari frekuensi dari setiap nilai menggunakan perlulangan dan kondisi
      • menentukan  frekuensi dari nilai mana yang terbanyak itulah modusnya
    • flowchart raptor

    • c++
    #include <iostream>
    using namespace std;
    void freku(const int data[],int n,int &sp){
    int max=0; int byk;
    for(int i=0;i<n;i++){
    byk=0;
    for(int j=0;j<n;j++){
    if(data[i]==data[j]) byk++;
    }
    if(byk>max) {sp= data[i]; max=byk;}
    }
    }
    void t(int d[],int n){
    cout<<"{";
    for(int i=0;i<n;i++){
    if(i!=0) cout<<","; cout<<d[i]; }
    cout<<"}\n";
    }
    int main(int argc, char** argv) {
    int data[]={2,5,3,6,2,5,7,8,5,3,4,8,1,9,4,7,2,0,4,2,5,4,2,8,3,6,3,4,1,8,9,3,5,1,2,4,6,9,5,9,9};
    int n = sizeof data/sizeof(int);
    int sp;
    t(data,n);
    freku(data,n,sp);
    std::cout<<"modus = "<<sp;
    return 0;
    }
    • program

    6.6 mengecek status polindrom suatu kata


    • masalah
      terdapat suatu kata atau beberapa kata utuk dicek apakah itu polindrom atau tidak.
      misal:
      kasur rusak
    • analisis
      mengecek sesuai urutan indek dari depan dengan indek dari belakang. contoh dibawah

       k  a  s  u  r    r  u  s  a  k 
       1 2 3 4 5   5 4 3 2 1
    • flowchart raptor

    • c++
    #include <iostream>
    #include "string.h"
    using namespace std;
    int pol(char a[]){
    int n=strlen(a);
    for(int i=0;i<n/2;i++)
    if(a[i]!=a[n-i-1]) return 0;
    return 1;
    }
    int main(int argc, char** argv) {
    char a[]="kasur rusak";
    cout<<a<<" itu ";
    if(pol(a)==1) cout<<"polindrom";
    else cout<<"bukan polindrom";
    return 0;
    }
    • program

    (how to solve) 4.6 mencari elemen terkecil

    • permasalahan
      mencari nilai terkecil dari sekumpulan nilai
    • analisis
      • untuk acuan pertama kali maka nilai terkecil adalah indek pertama
      • membandingkan nilai terkecil ke indek selanjutnya dengan perulangan sampai akhir indek, jika ditemukan nilai yang lebih kecil dari nilai terkecil tinggal mengganti nilai terkecil dengan nilai yang ditemukan tadi
    • flowchart raptor


    • c++
    #include <iostream>
    using namespace std;
    int max2(int a,int b){
    if(a<b) return a;
    else return b;
    }
    int mak(int da[],int n){
    int i,temp;
    temp=da[0];
    for(i=1;i<n;i++)
    temp=max2(temp, da[i]);
    return temp;
    }
    void t(int d[],int n){
    cout<<"{";
    for(int i=0; i<n ;i++){
    if(i!=0) cout<<",";
    cout<<d[i];
    }
    cout<<"}\n";
    }
    int main(int argc, char** argv) {
    int d[]={2,4,2,6,8,9,23,56,34,6,3,45,34,1,534,523,42,3423,4};
    int n=sizeof d/ sizeof(int);
    t(d,n);
    cout<<"nilai terkecil: "<<mak(d,n);
    }
    • program