Senin, 19 September 2016

Refleksi SData Minggu 1

Assalamualaikum wr.wb

Haris Selasa, 6 September 2016 merupakan pertemuan pertama mata kuliah Struktur Data yang diampu Bapak Wahyu Pujiono.

Pada pertemuan ini dibahas mengenai kontrak belajar dan rencana kuliah selama satu semester. Kami juga dipersilahkan membuat kelompok belajar yang terdiri dari 3 orang.

Refleksi SData Minggu 3

Assalamualaikum wr.wb

Selasa, 20 September merupakan pertemuan ke-3 perkuliahan Struktur Data. Sebelum memulai perkuliahan kami dipersilahkan melengkapi bahan ajar yang akan dipelajari hari ini. Pertemuan kali ini membahas tentang Class dan Rekursi. Kelompok kami melakukan diskusi bersama kelompok 12 dan kami mendapatkan tugas menjelaskan tentang Class dan Tahapan ke OOP. Sedangkan kelompok 12 akan menjelaskan tentang materi rekursif dan iteratif. saat kami mempresentasikan tentang class dihadapan kelompok diskusi kami, salah seorang anggota bertugas membuat ringkasan dari materi yang kami diskusikan.



Class terdiri dari field yang menyimpan data dan method yang diaplikasikan ke instans dari class.
Sedangkan Object merupakan instans dari class.

Fungsi Rekursi adalah fungsi yang memanggil dirinya sendiri dan mempunyai kode yang lebih pendek.




Senin, 06 Juni 2016

Menghitung Nilai IPK

Konstruksi data --> struck jmlipk{
                                char nama[100];
                                char nim[100];
                                int nilai [100][100];
                                int sks[100][100];
                                int ipk1[100][100];
                                string makul[100][100]
                                int jml_makul;
                                int jml_nilai;
                                }ipk;

Menghitung IPK :
#include <iostream>
using namespace std;

struct jmlipk{
char nama[100];
char nim[100];
int nilai[100][100];
int sks[100][100];
int ipk1[100][100];
string makul[100][100];
int jml_makul;
int jml_nilai;
}ipk;

int main(){
 int i, j;
 float jml_ipk, jml_sks;
 cout<<"=====================================\n";
 cout<<"[ Note   : Nilai Dalam Bentuk Angka ]\n";
 cout<<"[        A=4                        ]\n";
 cout<<"[        B=3                        ]\n";
 cout<<"[        C=2                        ]\n";
 cout<<"[        D=1                        ]\n";
 cout<<"[        E=0                        ]\n";
 cout<<"=====================================\n";
 cout<<"Nama          :";cin>>ipk.nama;
 cout<<"NIM           :";cin>>ipk.nim;
 cout<<"Jumlah Makul  :";cin>>ipk.jml_makul;
 for (i=0;i<ipk.jml_makul;i++){
  for (j=0;j<1;j++){
  cout<<"Makul         :";cin>>ipk.makul[i][j];
  cout<<"Nilai         :";cin>>ipk.nilai[i][j];
  cout<<"Sks           :";cin>>ipk.sks[i][j];
  cout<<"\n";
 }
}
 for (i=0;i<ipk.jml_makul;i++){
  for (j=0;j<1;j++){
   ipk.ipk1[i][j]=ipk.sks[i][j]*ipk.nilai[i][j];
  }
 }
 for (i=0;i<ipk.jml_makul;i++){
  for (j=0;j<1;j++){
   jml_sks=jml_sks+ipk.sks[i][j];
  }
 }
 for (i=0;i<ipk.jml_makul;i++){
  for (j=0;j<1;j++){
   ipk.jml_nilai=ipk.jml_nilai+ipk.ipk1[i][j];
  }
 }
 jml_ipk = ipk.jml_nilai/jml_sks;
 cout<<"================================\n";
 cout<<" Nama       : "<<ipk.nama<<" \n";
 cout<<" NIM        : "<<ipk.nim <<" \n";
 cout<<" Jumlah SKS : "<<jml_sks<<" \n";
 cout<<" Ipk        : "<<jml_ipk<<" \n";
 cout<<"================================";
 return 0;
 }

Jumat, 03 Juni 2016

Latihan Diktat Bab 9


Assalamu'alaikum wr.wb

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


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

1.    Identifikasi masalah

mengalikan matriks dengan vector   

2.   Menentukan input dan output

→ input                    :baris

                                :kolom

                                :A[max]

                                : m[baris]
                                :n

→output                  :perkalian matriks dan vektor=

3.   Membuat Algoritma/flowchart

Deklarasi:

A[maks][maks], baris, kolom, m[baris] ,n              :integer



Deskripsi:

for i ←0 to baris do then i++

for j←0 to kolom do then j++

write(‘Masukan data ke ["<<i<<"] ["<<j<<"]’)                   

end for

end for

               

               

write(‘Isi Matriks A ‘)

for i ←0 to baris do then i++

for j←0 to kolom do then j++

write(‘A[i][j]’)



end for

end for



write(‘penghitungan vektor ‘)

for z←0 to kolom do then z++

write(‘Masukan data ke ["<<z<<"] ‘)                      

end for



write(‘ vektor ‘)

for z←0 to kolom do then z++

write(‘m[z]’)

end for



write(‘perkalian matrik dan vektor ‘)

for i ←0 to baris do then i++

for j←0 to kolom do then j++

for z←0 to kolom do then z++

n←A[i][j]*m[z]

end for

end for

end for

4. Test menggunakan data

inputin→             :baris[2]=|1|

                                          |2|

                           Kolom[2]=|1|

                                             |2|

                           Isi matrik A=|1| |2|

                                               |1| |2|

                           Berapa variable=2

                           Vektor b=|1|

                                           |2|



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



      5.  Implementasi dengan c++

#include <iostream>

#define maks 10

using namespace std;

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



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

int A[maks][maks], baris, kolom;

cout<<"input baris :"; cin>>baris;

cout<<"input kolom :"; cin>>kolom;       

for(int i=0; i<baris; i++){

for(int j=0; j<kolom; j++){

cout<<"Masukan data ke ["<<i<<"] ["<<j<<"] : "; cin>>A[i][j];                    

}             

}             

cout<<"Isi Matriks A :\n";

for(int i=0; i<baris; i++){

for(int j=0; j<kolom; j++){

cout<<A[i][j]<<" ";

}

cout<<endl;

}

int m[baris],n;

cout<<"penghitungan vektor \n";

cout<<"berapa variabel : ";

                cin>>m[kolom];

                for(int z=0; z<kolom; z++){

                cout<<"Masukan data ke ["<<z<<"] "" : "; cin>>m[z];                     

}

cout<<endl;



cout<<" vektor b : \n";

                for(int z=0; z<kolom; z++){

cout<<m[z]<<"\n";

}

cout<<"perkalian matrik dan vektor \n";

for(int i=0; i<baris; i++){

for(int j=0; j<kolom; j++){

for(int z=0; z<kolom; z++){

n=A[i][j]*m[z];

cout<<n<<" ";

}

}

}

    return 0;

}
6. Eksekusi


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

1.       Identifikasi masalah
program untuk mencetak matriks identitas berodo n
2.       Menetukan Input Output:
→ input               :i, j, n
→output             :masukkan ordo matriks
3.       Membuat Algoritma/flowchart
 Algoritma:
Deklarasi:
i, j, n      :integer
Deklarasi:
Write(‘masukkan ordo matriks ‘)
For i1 to n do i++ then
For j1 to n do then j++
if(i==j)
write(‘1’)
else
write(‘0’)
end for
end for
end if
4.       Test menggunakan data
→inputin             :masukkan ordo matriks=4
→ouputi              :        1  0  0  0
                                    0    1  0
1     0  1  0  
0  0  0  1
5.       Implementasi dengan c++
#include"iostream"
using namespace std;
main(){ int i,j,n;
                cout<<"masukkan ordo matriks : "; cin>>n;
                for(i=1;i<=n;i++){
                                for(j=1;j<=n;j++){
                                                if(i==j) cout<<"1 ";
                                                else cout<<"0 ";
                                }
                                cout<<endl;
                }
}
6.       Eksekusi



3. 
Buatlah algoritma dan program untuk menghasilkan transpose suatu matriks.
1.       Identifikasi masalah
menghasilkan transpose suatu matriks.
2.       Menentukan input dan output
→ input               :i, j, m, n ,o, mat [m][n]
               
→output             :transpose matriksnya adalah
3.       Membuat algoritma/flowchart
 Deklarasi:
 i,j,m,n,o,mat[m][n]        :integer
Deskripsi:
write(‘Program transpose matriks C(m,n)’)
for i0 to m do then i++
for j0 to n do then j++
write(‘nilai C("<<i+1<<","<<j+1<<")’)
end for
end for
                                               
write(‘matriks diatas diilustrasikan seperti gambaran dibawah ini’)
for i0 to m do then i++
for j0 to n do then j++
write(‘mat[i][j]’)
end for
end for
om
mn
no;
write(‘Transpose matriksnya adalah seperti gambar dibawah ini\’)
for i0 to m do then i++
for j0 to n do then j++
write(‘mat[i][j]’)
end for
end for
4.       Test menggunakan data
→inputin             :nilai m=3
                            Nilain n=3
                                 
→ouput               :matriks dapat di ilustrasikan seperti gambar di bawah ini
                                1 2 3
                                4 5 6
                                2 4 5
                                transpose matriksnya adalah
                                1 4 2
                                2 5 4
                                3 6 5
5.       Implementasikan dengan c++
#include"iostream"
using namespace std;
main(){ int i,j,m,n,o;
                cout<<"Program transpose matriks C(m,n)\nMasukkan nilai m : ";
                cin>>m; cout<<"masukkan nilai n : "; cin>>n;
                int mat[m][n];
                for(i=0;i<m;i++){
                                for(j=0;j<n;j++){
                                                cout<<"nilai C("<<i+1<<","<<j+1<<")=";
                                                cin>>mat[i][j];
                                }
                                cout<<endl;
                }
                system("cls");
                cout<<"matriks diatas diilustrasikan seperti gambaran dibawah ini\n\n";
                for(i=0;i<m;i++){
                                for(j=0;j<n;j++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
                o=m; m=n; n=o;
                cout<<"\nTranspose matriksnya adalah seperti gambar dibawah ini\n\n";
                for(j=0;j<m;j++){
                                for(i=0;i<n;i++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
}
6.       Eksekusi

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

1.       Identifikasi masalah
mengalikan matriks dengan suatu skalar (konstanta)
2.       Menentukan input dan output
→input                 : q,  brs, klm, i, j ,k           
→output             :matriks a=
                           Matriks b=
                           Matriks a x b=
3.       Membuat algoritma/flowchart
Deklarasi:
q,  brs, klm , i, j,k              :integer
for i 0 to brs do then i++
for j 0 to klm do then j++
write(‘ Elemen (i + 1), (j + 1)’)
end for
end for
           
for i 0 to brs do then i++
for j 0 to klm do then j++
write((‘q + i * klm + j) ‘)
end for
end for
for i  0 to bA do then i++
for j 0 to kB to then  j++
(z + i * bB + j) 0;
For k 0 to kA do then  k++
(z + i * bB + j) += (p + i * kA + k) * (*(q + k * kB + j))
End for
End for
End for
4.       Test menggunakan data
→input                 :jumlah baris dan kolom matriks A=[2][3]
                             jumlah baris dan kolom matriks B=[3][2]
                             koordinat inputan misalkan berordo=[2][2]
→output             :matriks A x B=|12           12|
                                                    -1            12          
5.       Implementasikan dengan c++
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void Masukan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        for(j = 0; j < klm; j++) {
            cout << " Elemen [" << (i + 1) << "][" << (j + 1) << "]? ";
            scanf("%d", (q + i * klm + j));
        }
    }
}
void Tampilkan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        cout << endl;
        for(j = 0; j < klm; j++) {
            cout <<" ";
            cout << *(q + i * klm + j) << "\t";
        }
    }
    cout << endl;
}
void Kali(int *p, int *q, int *z, int bA, int kA, int bB, int kB) {
    int i, j, k;
    for(i = 0; i < bA; i++) {
        for(j = 0; j < kB; j++) {
            *(z + i * bB + j) = 0;
            for(k = 0; k < kA; k++) {
                *(z + i * bB + j) += *(p + i * kA + k) * (*(q + k * kB + j));
            }
        }
    }
}
int main() {
cout<<"\t\t\tPROGRAM    : PERKALIAN MATRIKS DENGAN SKALAR\n";
awal:
    int *a, *b, *c, brsA, klmA, brsB, klmB;
    cout<<"\n SYARAT...!!!\n";
    cout<<" Jumlah Kolom A HARUS SAMA dengan Baris B\n\n";
    cout << " Jumlah Baris Matriks A? ";
    cin >> brsA;
    cout << " Jumlah Kolom Matriks A? ";
    cin >> klmA;
    cout << " Jumlah Baris Matriks B? ";
    cin >> brsB;
    cout << " Jumlah Kolom Matriks B? ";
    cin >> klmB;
    if(klmA != brsB) {
        cout << " Perkalian TIDAK Dapat Dilakukan." << endl;
        cout << " Jumlah Kolom A TIDAK Sama Dengan Jumlah Baris B." << endl;
    } else {
        a = (int *) malloc(brsA * klmA * 4);
        b = (int *) malloc(brsB * klmB * 4);
        c = (int *) malloc(brsA * klmB * 4);
        cout << "\n Kordinat Inputan [y][x]" ;
        cout << "\n Contoh: ordo 2x2" ;
        cout << "\n [1][1]\t[1][2]\t" ;
        cout << "\n [2][1]\t[2][2]\t" ;
        cout << "\n\n Input Matriks A:\n" ;
        cout << " ----------------\n";
        Masukan(a, brsA, klmA);
        cout << "\n Input Matriks B:\n" ;
        cout << " ----------------\n";
        Masukan(b, brsB, klmB);
        cout << "\n Matriks A:" << endl;
        Tampilkan(a, brsA, klmA);
        cout << "\n Matriks B:" << endl;
        Tampilkan(b, brsB, klmB);
        Kali(a, b, c, brsA, klmA, brsB, klmB);
        cout << "\n Matriks A x B:" << endl;
        Tampilkan(c, brsA, klmB);
    }
cout<<"\n\n Apakah Anda Ingin Mengulang [Y/N] ? "  ;
char m ;
cin>>m;
if (m == 'y' || m== 'Y')
goto awal;
else if (m == 'n' || m== 'N')
{
goto akhir;
}
akhir:
cout<<"\n\n\t\t\t    \"TERMA KASIH\"";
    return 0;
}
 

6.       Eksekusi

 Semoga Bermanfaat!!!