Follow Us @soratemplates

Jumat, 16 Juni 2017

Workshop 10

Juni 16, 2017 0 Comments
 
 
 
  Identifikasi Masalah
Modifikasi struktur data dari algoritma 9.1. dan algoritma 9.2. sehingga sesuai dengan
tabel di atas dengan menggunakan link list.

       Menentukain input dan output
input                 :Nama
                         Nim
                         Nilai
output             :Nilai Huruf adalah
                     
  Membuat Algorita
Algoritma
Deklarasi:
                Nama[30]                            :karakter
                Nim[10]                               :karakter
                Nilai                                     :integer
Deskripsi:
while when lagi=='Y' then lagi=='y'
    while (cetak !=NULL)
if when cetak->Nilai>=0 and cetak->Nilai<20
E
else if when cetak->Nilai>=20 and cetak->Nilai<40
else if when cetak->Nilai>=40 and cetak->Nilai<60
C
else if when cetak->Nilai>=60 and cetak->Nilai<80
B
Else
A
cetak=cetak->berikut
end if
end while
end while
 
 
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();
}

Workshop 9

Juni 16, 2017 0 Comments
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 i←1 to n do i++ then
For j←1 to n do then j++
if(i==j)
write(‘1’)
else
write(‘0’)
end for
end for
end if

Raptor:



4.       Test menggunakan data
→inputin             :masukkan ordo matriks=4

→ouputi              :        1  0  0  0
                                    0    1  0  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 i←0 to m do then i++
for j←0 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 i←0 to m do then i++
for j←0 to n do then j++
write(‘mat[i][j]’)
end for
end for

o→m
m→n
n→o;
write(‘Transpose matriksnya adalah seperti gambar dibawah ini\’)
for i←0 to m do then i++
for j←0 to n do then j++
write(‘mat[i][j]’)
end for
end for

Raptor:


 lanjutan....

 lanjutan....



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










 5. Buatlah algoritma dan program invers matriks berordo dua. Lalu kalikan matriks asal dengan matriks inversnya untuk mengecek apakah hasil kalinya merupakan matriks identitas atau bukan.


1.       Identifikasi masalah
→program invers matriks berordo dua. Lalu kalikan matriks asal dengan matriks  inversnya untuk mengecek apakah hasil kalinya merupakan matriks identitas atau bukan

2.       Menentukan input dan output
→input                 : i, j, det, temp

→output             :untuk inversnya adalah

3.       Membuat algoritma/flowchart
 Raptor:







.       Test menggunakan Data

→input                 :nilai c(1,1)=2
                             Nilai c(1,2)=1

                             Nilai c(2,1)=1
                             Nilai c(2,2)=2

                             Matriks= 2           2
                                            1           2
→output             :adjoin dari matriks diatas adalah
                                 2             -2
                                 -1             2
                                Untuk inversnya adalah
                                 1             -1
                                -0.5          1
5.       Implementasi dengan 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;
                }
}

6.       Eksekusi

Workshop 08

Juni 16, 2017 0 Comments
1. Perhatikan bahwa Anda dapat melewatkan banyak nomor dalam daftar dan masih berada dalam urutan menaik yaitu sebagai berikut :

3 4 6 17 21 24 32 43
Angka-angka ini meningkat saat Anda bergerak melalui daftar dari kiri ke kanan. Bangunlah
sebuah array yang berisi angka-angka tersebut ? Kemudian lakukan pencarian biner (Binary
Search) untuk memeriksa apakah angka yang kita cari ada dalam daftar array tersebut ?

Inilah Program & Outputnya :

 
2. Jika terdapat sebuah array yang elemennya berindeks 1 sampai dengan 15. Masing-masing
elemen berturut-turut berisi nilai sebagai berikut:
1, 2, 8, 25, 30, 49, 50, 55, 60, 61, 68, 70, 72, 84, 90.
a. Jelaskan langkah-langkah pencarian nilai 49 dalam array tersebut dengan metode pencarian biner, sehingga menghasilkan indeks elemen array tempat ditemukannya nilai tersebut.
b. Jelaskan langkah-langkah pencarian nilai 71 dalam array tersebut dengan metode pencarian biner, sehingga menghasilkan kesimpulan bahwa nilai tersebut tidak berhasil ditemukan.

Inilah Program & Outputnya :


              a.
          b.
3. Urutkan deret angka berikut dengan bubble sort :
7 4 5 8 10
Tuliskan hasil tiap langkah (step).

Inilah Program & Outputnya :



4. Periksalah daftar 6 angka di bawah ini :
    14 32 5 12 61 7
    Ketika Anda melihat daftar tersebut, Anda segera dapat melihat bahwa 5 adalah angka terkecil didaftar. Tugas ini lebih sulit untuk komputer. Jadi untuk itu harus dibuat program untuk menemukan nilai minimum tersebut. Buatlah program selection sort dan lakukan sorting secara manual (step by step) !
   
   Inilah program & Outputnya :


5. Urutkan deret angka berikut dengan selection sort dan tuliskan hasil tiap langkah (step) :
    21 16 25 8 19 4 1

   Inilah Program & Outputnya :



6. Diketahui deret angka sebagai berikut :
    5 2 4 6 1 3
   Dari deret angka tersebut, lakukan pengurutan dari yang paling kecil sampai paling besar menggunakan insertion sort !

   Inilah Program & Outputnya : 



7. Mari kita lihat daftar nomor dari sebuah array untuk melihat bagaimana cara merge sort bekerja :
    32 12 5 18 31 4 25 7
    [0] [1] [2] [3] [4] [5] [6] [7]
    Lakukan sorting dari data dalam array di atas menggunakan merge sort sehingga nomor  paling kecil berada paling depan samapai yang paling besar berada paling belakang !

     Inilah Program & Outputnya :

 

8. Diketahui deretan data sebagai berikut :
    8 1 4 9 7 3 5 2 7
    Urutkan data tsb. memakaiMerge sort, agar elemen terkecil berada paling depan (urutan pertama), semakin ke belakang semakin besar !

  Inilah Program & Outputnya :

 

 
9. Ada beberapa kumpulan data sebagai berikut :
    2 8 3 5 6 4 11 1 9
    Urutkan kumpulan data di atas menggunakan quick sort serta gambarkan step by step dari sorting tersebut !
  Inilah Program & Outputnya :



 
10. Urutkan data yaitu [2 8 7 1 3 5 6 4] dengan menggunakan Quick Sort, agar elemen  terkecil berada paling depan (urutan pertama), semakin ke belakang semakin besar !

     Inilah Program & Outputnya :



Wrokshop 07

Juni 16, 2017 1 Comments
1.      Buatlah algoritma dan subprogram yang cara kerjanya seperti procedure insert di atas.               Misalkan : kata1 = “Algoritma Pemrograman”
             kata2 = “dan “
Outputnya :

            kata3 = “Algoritma dan Pemrograman”

Coba lakukan secara manual huruf demi huruf dari kata2 yang disisipkan ke kata1.
Perhatikan letak indeks dari kata1 yang akan memperoleh tambahan kata2.
Cara manual :
Algoritma :
Subprogram :




Inilah Program & Outputnya :


  
2. Buatlah algoritma dan program untuk mengubah string menjadi bergantian huruf besar
dan kecil. Contoh :
Algoritma dan Pemrograman 􀃆 AlGoRiTmA dAn PeMrOgRaMaN
Analisis :
Perhatikan bahwa manipulasi elemen (dalam hal ini karakter) array tertuju pada
indeksnya. Buat angka indeks di bawah setiap karakter di atas :
Karakter A l G o R i T m A d A n P e M r O g R a M a N
Indeks
Cari keberaturan letak karakter yang berubah. Kemudian turunkan menjadi algoritma.
Rumus letak karakter yang berubah :
Algoritma :



Inilah Program & Outputnya :


 


3. Buatlah algoritma dan program untuk menghitung jumlah kata dalam suatu kalimat.
Analisis :
Dalam sebuah kalimat, apa yang digunakan untuk mulai menghitung satu kata ke kata
lain ?
Jawab :
Buat contoh kalimat di bawah ini.
Hitung banyaknya kata dalam kalimat secara manual. Banyak kata = ....
Algoritma :


Inilah Programnya & Outputnya :


 

 
4. Diberikan class Vektor berikut ini.
class Vektor {
friend ostream& operator<<(ostream&, Vektor&);
friend istream& operator>>(istream&, Vektor&);
friend class SPL;
public:
Vektor();
void penjumlahan_vektor(const Vektor& A, const Vektor& B);
void perkalian_vektor(float k, const Vektor& A);
void beri_nilaiBanyak(int);
private:
int elemen[100];
int banyak; };
 Sebuah vektor yang disimpan menggunakan array, dapat dipandang sebagai vektor baris maupun vektor kolom. Method penjumlahan_vektor didefinisikan sebagai penjumlahan elemenelemen Vektor A dan Vektor B pada indeks yang sama. Method perkalian_vektor didefinisikan sebagai perkalian Vektor A dengan skalar k. Sementara method beri_nilai Banyak menunjukkan berapa banyak elemen dari suatu vektor. Lengkapi isi method di atas sehngga sesuai dengandefinisi yang diberikan.
 
Misal :
Vektor A 2 -3 7 1 -8
dan
Vektor B 0 1 5 -3 5
Hasilnya :
Vektor C
void Vektor::beri_nilaiBanyak(int i) {
}
void Vektor::penjumlahan_vektor(const Vektor& A, const Vektor& B) {
}
void Vektor::perkalian_vektor(float k, const Vektor& A) {
}



Inilah Programnya :





Latihan

      2.      Buatlah algoritma dan function dalam bahasa C untuk menggantikan strlen, yaitu mengetahui panjang suatu string

Inilah Program & Outputnya




3. Buatlah algoritma dan function untuk mengubah huruf besar menjadi huruf kecil, kemudian buatlah function untuk mengubah string menjadi string yang hurufnya huruf besar semua.
Inilah Program & Outputnya