Minggu, 12 Juni 2016

Diktat bab 8 & 9



  •  Diberikan suatu matriks berordo n. Buatlah algoritma dan program untuk mencetak matriks identitas berodo n.
Dev C++
source code :


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

}


  •  Buatlah  program untuk menghasilkan transpose suatu matriks.
Dev C++
source code :

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



  •  Buatlah  program mengalikan matriks dengan suatu skalar (konstanta).
Dev C++
source code :

source code :

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




Refleksi 13

hallo bertemu lagi di refleksi ke 13 
Pada tanggal 8 juni 2016 adalah pertemuan ke 13 matakuliah Algoritma dan Pemrograman. Kami ditugas untuk menghitung ipk mahasiswa yang terdiri dari:
1. Rekonstruksi data
2. menghitung ipk
3. Algoritma keseluruhan
Setiap anggota kelompok mendapatkan 1 bagian dan saya kebagian mengerjakan algoritma keseluruhan. Setelelah mengerjakan tugas diatas Dosen memberitahu apa saja yang akan dilakukan pada perkuliahan minggu depan yaitu perkuliah minggu terakhir di semester 2 ini.


Sekian refleksi kali ini, nanti kita smbung lagi di rfleksi terakhir yaitu reflekis ke 14.
terimakasih

Refleksi 12

Hallo bertemu lagi di refleksi 12
01 Juni 2016 adalah pertemuan ke 12 matakuliah Algoritma dan Pemrograman yang membahas tentang “ Pointer”
Berikut rangkuman materi hari ini:
1.       Perbedaan Array dan Record
-Array merupakan tipe data  terstruktur dimana didalamnya terdiri dari komponen-komponen yang mempunyai tipe data yang sama.
-Record adalah sebuah rekaman disusun oleh beberapa field. Dan tiap filenya berisi data dari tipe dasar 1 bentukan tertentu.

2.       Perbedaan class dan struct
-Class adalah sesuatu yang mempunyai data(sifat) dan fungsi(kelakuan) untuk mendefinisikan suatu objek.
-Struct  mendefinisikan tipe data dan memberitahukan kepada visual c++ untuk memperlakukan koleksi tipe data dasar sebagai satu kesatuan tipe data yang darinya dapat mendefinisikan variable dan array variabel .

                            Field                   field    
                               ↓                        ↓
No
Nim
Nama
tanggal
37
1500018172
Ghaida Hayati azzhro
38
1500018173
Avinny Meidiana
                                                           ↑
                                                        String

Struct tanggal{
Int tgl;
Int bln;
Int thn;
};
Class Penduduk{
Int No;
Char No;
Char Nim[10];
Char Nama[10];
};



Tipe data=penduduk
Variabel=Yogyakarta
Cetaklah dari penduduk yogyakarta itu yang berjenis kelamin laki-laki
If Yogyakarta(yogya[i].jenis_kelamin==true){
For (int i=0;i<=100;i++)
Cout<<Yogyakarta[i].jenis kelamin=”laki-laki";
}




 Sekian Refleksi 12 nanti kita sambung lagi di refleksi 13 . terimakasih


Sabtu, 04 Juni 2016

Refleksi 11

Hallo bertemu lagi di refleksi 11
01 Juni 2016 pertemuan mata kuliah algoritma pemrograman yang ke 11. pada oertemuan ini
 membahas tentang " Array Dua Dimensi, Kasus Matriks".
Berikut Rangkumannya:

Buatlah tabel perkalian dengan Baris 1-8 dan kolom 1-10

A
j=1
j=2
j=3
j=4
j=5
j=6
j=7
j=8
j=9
j=10
i=1
a11
a12
a13
a14
a15
a16
a17
a18
a19
a110
i=2
a21
a22
a23
a24
a25
a26
a27
a28
a29
a210
i=3
a31
a32
a33
a34
a35
a36
a37
a38
a39
a310
i=4
a41
a42
a43
a44
a45
a46
a47
a48
a49
a410
i=5
a51
a52
a53
a54
a55
a56
a57
a58
a59
a510
i=6
a61
a62
a63
a64
a65
a66
a67
a68
a69
a610
i=7
a71
a72
a73
a74
a75
a76
a77
a78
a79
a710
i=8
a81
a82
a83
a84
a85
a86
a87
a88
a89
a810


8i=1      10j=1    aij=i x j
    ↓
                            A[i,j]=i x j



For (i=1;i<=8;i++){
     For(j=1;j<=10;j++){
     A[I,j]=i x j
     }
}

Sekian Refleksi kali ini, Nanti kita sambung lagi di refleksi ke 12 
terimakasihh 

Rabu, 25 Mei 2016

Mengalikan Vektor (2 elemen) dengan Matriks berukuran 2x3 dan Vektor (3 elemen)



1. Identifikasi Masalah
=> Mengalikan Vektor (2 elemen) dengan Matriks berukuran 2x3 dan Vektor (3 elemen)

2. Menentukan input dan output
Input :
matrix [2] [3] = {1,2,3,3,2,1}  
vektor [3] = {2,3,4}  
vek [2] = {2,1}
Output :
Hasil perkalian matrix 2x3 dan vektor 3 elemen :
20
16

Hasil perkalian vektor(elemen 2) dengan matrix elemen 2x3 dan vektor(elemen 3) :
40
16

3. Membuat Flowchart atau Algoritma
Algoritma Perkalian_Matrix
{ Menghitung hasil perkalian vektor(elemen 2) dengan matrix elemen 2x3 dan vektor(elemen 3)}

Deklarasi :
matrix [2] [3] = {1,2,3,3,2,1}              : integer
vektor [3] = {2,3,4}                            : integer
vek [2] = {2,1}                                  : integer
hasil [2] ={0}                                      : integer

Deskripsi :
Write('Matrik elemen 2x3 : \n')
            for i ß 0 to 2 do then i++
                        for j ß 0 to 3 then j++
                                    hasil[i] ß hasil[i]+(matrix[i][j]*vektor[j]);
            end for
                        end for

for i ß 0 to 2 do then i++
            for j ß 0 to 3 then j++ then
                        write(hasil[i][j])
            end for
                        end for

write(‘Vektor 3 elemen: \n’)
            for j ß 0 to 3 then j++ then
                        write(vektor[i])
end for

write(‘Vektor 2 elemen : \n’)
            for i ß 0 to 2 then i++ then
                        write(vek[i])
end for

write(‘Hasil perkalian matrix 2x3 dan vektor 3 elemen : \n’)
            for i ß 0 to 2 then i++
                        write(hasil[i])
end for

write(‘Hasil perkalian vektor(elemen 2) dengan matrix elemen 2x3 dan vektor(elemen 3) : \n’)
for i ß 0 to 2 then i++
                        hasil[i] ßhasil[i]*vek[i];
                        write(hasil[i])

end for

4. Test Menggunakan data
Input :
matrix [2] [3]:    | 1 2 3|
                           | 3 2 1|
vektor [3]        : | 2 |
                          | 3 |
                          | 4 |
vek [2]   | 2 |
              | 1 |
Output :
Hasil perkalian matrix 2x3 dan vektor 3 elemen :
20
16

Kemudian hasilnya dikalikan dengan asil perkalian vektor(elemen 2) ,
Hasil akhirnya adalah :
40
16


5. Implementasi c++

#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void perkalian(int matrix[2][3],int vektor[3],int hasil[2]){
 cout<<"Matrik elemen 2x3 : \n";
 for(int i=0;i<2;i++){
  for(int j=0;j<3;j++)
   hasil[i]=hasil[i]+(matrix[i][j]*vektor[j]);
 }
}

void cetakmatrix(int hasil[][3]){
 for(int i=0;i<2;i++){
  for(int j=0;j<3;j++)
   cout<<hasil[i][j]<<" ";
   cout<<endl;
 }
}

void cetakvektor(int vektor[]){
 cout<<"Vektor 3 elemen: \n";
 for(int i=0;i<3;i++){
  cout<<vektor[i]<<endl;
 }
}

void cetakb(int vek[]){
 cout<<"Vektor 2 elemen : \n";
 for(int i=0;i<2;i++){
  cout<<vek[i]<<endl;
 }
}
void cetak(int hasil[]){
 cout<<"Hasil perkalian matrix 2x3 dan vektor 3 elemen : \n";
 for(int i=0;i<2;i++){
  cout<<hasil[i]<<endl;
 }
}

void cetaka(int vek[2],int hasil[]){
 cout<<"Hasil perkalian vektor(elemen 2) dengan matrix elemen 2x3 dan vektor(elemen 3) : \n";
    for(int i=0;i<2;i++){
 hasil[i]=hasil[i]*vek[i];
 cout<<hasil[i]<<endl;
}
}

int main(int argc, char** argv) {
 int matrix[2][3]={1,2,3,3,2,1}, vektor[3]={2,3,4},vek[2]={2,1},hasil[2]={0};
 perkalian(matrix,vektor,hasil);
 cetakmatrix(matrix);
 cetakvektor(vektor);
 cetak(hasil);
 cetakb(vek);
 cetaka(vek,hasil);
 return 0;
}


Selasa, 24 Mei 2016

Refleksi 10

Hallo bertemu lagi dengan refleksi  10
Rabu, 18 mei 2016 adalah pertemuan ke 10 algoritma dan pemrograman. Pada pertemuan ini membahas materi tentang searching. 

1. Linear search
Diberikan contoh soal :
buatlah array 10 elemen dengan nama A yang <10
indeks 1  2  3  4  5  6  7  8  9  10
A =     2  0  7  9  4  5  6  1  8  3
kunci pencarian : 4
4=2, 4=0, 4=7, 4=9, 4=4.
data 4 berada diposisi indeks ke 5
i=1
while(i<=n){
if kp[i] then
write ("data",kp "ada pada posisi ke-",i)

2. Binary Seearch
Syarat : data sudah terurut
contoh soal :
Buatlah array dengan nama B dengan  elemen isi data maksimal 9 tetapi <10 terdiri dari bilangan acak dari kiri ke kanan.
Indeks : 1  2  3  4  5  6  7  8
       B : 1  2  4  5  6  7  8  9
kp=7
7=1, 7=2, 7=4, 7=5, 7=6, 7=7
lalu kita bandingkan dengan indeks yang ditengah
1+8/2= 4.5 =4
jadi 4 adalah indeks tengah
hitung kembali :
indeks awal+indeks akhir / 2
5+8/2 =6.5 = 6
6+8/2 =7
maka ditemukan pada indeks ke 6

sekian refleksi 10 nanti kita sambung lagi di refleksi 11 . terimakasihh 

Senin, 16 Mei 2016

Refleksi 9

Hallo bertemu lagi di refleksi 9
Tanggal 14 mei 2016 adalah pertemuan ke sembilan matakuliah Algoritma dan Pemrograman yang membahas tentang "Sorting". Dosen menjelaskan materi dan menjelaskan tata cara membuat program Bubble Sort, Selection Sort dan Insertion Sort. Kemudian setelah Dosen menjelaskan, setiap anggota kelompok di perintah untuk mengerjakan tugas sesuai yang ada di rencana kuliah dan saya kebagian mengerjakan program Selection sorting. 
Berikut cara mencari setiap bagian sorting:
1. membandingkan 2 bilangan
2. memindah elemen dari 2 bilangan
3. menggeser bilangan
4. menggunakan indeks array

       1. Bubble Sort
Metode pengurutan gelembung (bubble sort) mempunyai perilaku seperti gelembung di mana bila akan diurutkan naik, nilai yang besar akan naik (indeks besar) sementara nilai yang kecil akan turun (ke indeks yang kecil).
Sebagai ilustrasi, proses bubble sort adalah sebagai berikut :
Data awal : [8, 4, 7, 3, 1, 2, 6, 5] 8←→4, 4←→3, 3←→1
fase 1 [1, 8, 7, 4, 3, 2, 6, 5] 8←→7, 7←→4, 4←→3, 3←→2
fase 2 [1, 2, 8, 7, 4, 3, 6, 5] 8←→7, 7←→4, 4←→3
fase 3 [1, 2, 3, 8, 7, 4, 6, 5] 8←→7, 7←→4
fase 4 [1, 2, 3, 4, 8, 7, 6, 5] 8←→7, 7←→6, 6←→5
fase 5 [1, 2, 3, 4, 5, 8, 7, 6] 8←→7, 7←→6
fase 6 [1, 2, 3, 4, 5, 6, 8, 7] 8←→7
fase 7 [1, 2, 3, 4, 5, 6, 7, 8]
fase 8 [1, 2, 3, 4, 5, 6, 7, 8]
        2. Selection Sort
Algoritma pengurutan dengan metode seleksi dapat diilustrasikan demikian. Misalkan
diberikan data awal :
[8, 4, 7, 3, 1, 2, 6, 5]
Data awal : [8, 4, 7, 3, 1, 2, 6, 5] 1 terkecil, 8←→1
fase 1 [1, 4, 7, 3, 8, 2, 6, 5] 2 terkecil, 4←→2
fase 2 [1, 2, 7, 3, 8, 4, 6, 5] 3 terkecil, 7←→3
fase 3 [1, 2, 3, 7, 8, 4, 6, 5] 4 terkecil, 7←→4
fase 4 [1, 2, 3, 4, 8, 7, 6, 5] 5 terkecil, 8←→5
fase 5 [1, 2, 3, 4, 5, 7, 6, 8] 6 terkecil, 7←→6
fase 6 [1, 2, 3, 4, 5, 6, 7, 8] 7 terkecil, tetap
fase 7 [1, 2, 3, 4, 5, 6, 7, 8]
fase 8 [1, 2, 3, 4, 5, 6, 7, 8]
       3. Insertion Sort
Untuk menjelaskan algoritma pengurutan dengan metode penyisipan, bayangkan setumpuk kartu ada di meja, dengan nomor :
[8, 4, 7, 3, 1, 2, 6, 5]
Urutan selengkapnya adalah sebagai berikut :
Data awal : [8, 4, 7, 3, 1, 2, 6, 5]
fase 1, 4 masuk [4, 8, 7, 3, 1, 2, 6, 5]
fase 2, 7 masuk [4, 7, 8, 3, 1, 2, 6, 5]
fase 3, 3 masuk [3, 4, 7, 8, 1, 2, 6, 5]
fase 4, 1 masuk [1, 3, 4, 7, 8, 2, 6, 5]
fase 5, 2 masuk [1, 2, 3, 4, 7, 8, 6, 5]
fase 6, 6 masuk [1, 2, 3, 4, 6, 7, 8, 5]
fase 7, 5 masuk [1, 2, 3, 4, 5, 6, 7, 8]
fase 8 [1, 2, 3, 4, 5, 6, 7, 8]

Sekian dulu  refleksi 9 nanti kita sambung lagi di refleksi 10 .