Helloooo
Mulai saat ini saya sampai 6bulan kedepan saya akan memposting Stuktur data.
Minggu pertama kuliah mempelajari materi terakhir dari semester 2 yang lalu.
saya Khawatir jika dosen menjelaskan saya tidak mengerti hehehee, harapan saya semoga kuliah lancar dan bisa mendapat IPK tinggi lalu bisa membikin lapangan usaha yang bagus.
Kodok Ngoding
Rabu, 07 September 2016
Sabtu, 11 Juni 2016
Refeksi minggi kedua belas
wahhhhh kali ini ane gak masuk kuliah gan karna bangun ya ke siangan wkwkwkk.
setau ane materi kali ini adalah RECORD, STRUCK dan CLASS --> Pointer dan Pengenalan Struktur Data.
setau ane materi kali ini adalah RECORD, STRUCK dan CLASS --> Pointer dan Pengenalan Struktur Data.
Selasa, 07 Juni 2016
Menghitung IPK
- Algoritma :
Mencari nilai IPK mahasiswa berdasarkan nilai yang diiputkan
Deklarasi
i,n : integer
nim, nama, fakultas : char
prodi, alamat : char
nilai : float
nil 1 : string
nil 2 : string
Deskripsi
void mahasiswa :: masuk ( )
for i <--- 1 to n do
write (i)
read (nim)
read (nama)
read ( fakultas)
read (Prodi)
read (alamat)
read (mhs[i].nil1)
if mhs[i]. nil1 <---- A
mhs [i] nilai = 4
else if mhs[i]. nil1 <---B
mhs[i] nilai = 3
else if mhs[i]. nil1 <---C
mhs[i] nilai = 2
else if mhs[i]. nil1 <---D
mhs[i] nilai = 1
else if mhs[i]. nil1 <---E
mhs[i] nilai = 0
void mahasiswa :: proses ( )
for i <--- to n do
write (nama)
write (nim)
write (fakultas)
write (prodi)
write (alamat)
write (mhs nilai/9)
- C ++ :
#include <cstdlib>
#include <iostream>
using namespace std;
class mahasiswa {
public:
int i,n;
struct
{
char nim[5];
char nama[15];
string nil1;
string nil2;
string nil3;
char fakultas[40];
char prodi[20];
char alamat[40];
float nilai;
} mhs[80];
void masuk(int n);
void proses(int n);
};
void mahasiswa::masuk( int n){
// untuk inputan data terdapar parameter n untuk jumlh mhs
for(i=1; i<=n; i++)
{
cout<<" Data Ke -"<<i<<" "<<endl;
cout<<" Masukan NIM = "; cin>>mhs[i].nim;
cout<<" Masukan Nama = "; cin>>mhs[i].nama;
cout<<" Masukan Fakultas = "; cin>>mhs[i].fakultas;
cout<<" Masukan Prodi = "; cin>>mhs[i].prodi;
cout<<" Masukan Alamat = "; cin>>mhs[i].alamat;
cout<<endl;
cout<<" Masukan Nilai Akhir Algoritma dan Pemrograman 3 sks (A,B,C,D,E) = "; cin>>mhs[i].nil1;
if(mhs[i].nil1=="A") // kondisi jika saat nilai A,B,C,D
mhs[i].nilai=mhs[i].nilai+4*3;
else if(mhs[i].nil1=="B")
mhs[i].nilai=mhs[i].nilai+3*3;
else if(mhs[i].nil1=="C")
mhs[i].nilai=mhs[i].nilai+2*3;
else if(mhs[i].nil1=="D")
mhs[i].nilai=mhs[i].nilai+1*3;
cout<<" Masukan Nilai Akhir B.inggris 3 sks (A,B,C,D) = "; cin>>mhs[i].nil2;
if(mhs[i].nil2=="A")
mhs[i].nilai=mhs[i].nilai+4*3;
else if(mhs[i].nil2=="B")
mhs[i].nilai=mhs[i].nilai+3*3;
else if(mhs[i].nil2=="C")
mhs[i].nilai=mhs[i].nilai+2*3;
else if(mhs[i].nil2=="D")
mhs[i].nilai=mhs[i].nilai+1*3;
cout<<" Masukan Nilai Akhir kalkullus 3 sks (A,B,C,D) = "; cin>>mhs[i].nil3;
if(mhs[i].nil3=="A")
mhs[i].nilai=mhs[i].nilai+4*3;
else if(mhs[i].nil3=="B")
mhs[i].nilai=mhs[i].nilai+3*3;
else if(mhs[i].nil3=="C")
mhs[i].nilai=mhs[i].nilai+2*3;
else if(mhs[i].nil3=="D")
mhs[i].nilai=mhs[i].nilai+1*3;
cout<<endl;
}
}
void mahasiswa::proses(int n){ // mencetak hasil tdi setelah di kondisi
for(i=1; i<=n; i++)
{
cout<<" Data Ke -"<<i<<" "<<endl;
cout<<" Nama = "<<mhs[i].nama<<endl;
cout<<" NIM = "<<mhs[i].nim<<endl;
cout<<" Fakultas = "<<mhs[i].fakultas<<endl;
cout<<" Prodi = "<<mhs[i].prodi<<endl;
cout<<" Alamat = "<<mhs[i].alamat<<endl;
cout<<" Nilai IPK = "<<mhs[i].nilai/9<<endl; // merupakan variable penyimpan nilai kemudian di bagi 9 untuk mencari ipk
}
}
int main(int argc, char *argv[])
{
mahasiswa k;
int n;
cout<<" Masukan Jumlah Mahasiswa = ";cin>>n;
k.masuk(n);
k.proses(n);
system("pause");
return 0;
}
Kelompok : 1. Aji sentosa
2. ryan antono
Selasa, 24 Mei 2016
Refleksi minggu ke sebelas
pertemuan alpro kali ini membahas tentang materi Array dua dimensi , kasus matriks
diawal jam pertemuan dosen seperti biasa menyuruh mahasiswa untuk membaca materi terlebh dahulu lalu dosen memberikan contoh soal. salah satu dari mahasiswa disuruh untuk maju kedepan kelas untuk menjawab.
diakhir jam pertemuan dosen memberikan tugas unuk upload diblog masing-masing tentang tugas mengalikan vektor (2 elemen) dengan matriks berukuran 2x3 dan vektor (3 elemen) melalui 6 tahap (seperti biasa) . tugas tersebut dipos terkhir jam 21.00 hari ini 24 mei 2016.
tugas tersebut saya juga akan mencari referensi di internet
diawal jam pertemuan dosen seperti biasa menyuruh mahasiswa untuk membaca materi terlebh dahulu lalu dosen memberikan contoh soal. salah satu dari mahasiswa disuruh untuk maju kedepan kelas untuk menjawab.
diakhir jam pertemuan dosen memberikan tugas unuk upload diblog masing-masing tentang tugas mengalikan vektor (2 elemen) dengan matriks berukuran 2x3 dan vektor (3 elemen) melalui 6 tahap (seperti biasa) . tugas tersebut dipos terkhir jam 21.00 hari ini 24 mei 2016.
tugas tersebut saya juga akan mencari referensi di internet
Perkalian Matrik dengan vektor
- Masalah :
- Analisis :
mengecek baris atau kolom yang jumlahnya sama antara matrik yang ingin dikalikan.
mengalikan matriks dengan vektor syarat jumlah kolom matrik a sama dengan baris vektor b.
hasil akan dihitung dengan perkalian baris matrik satu dengan kolom matrik satunya
- Algoritma :
procedur kali matrik (input/output i,j,matrik vektor)
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])
end for
end for
end
- Program dev c++ :
#include <iostream>
#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<<hasil[i][j]<<" ";
cout<<endl;
}
}
void cetakv(int vektor[]){
cout<<"\nVektor : \n";
for(int i=0;i<3;i++){
cout<<vektor[i]<<endl;
}
}
void cetak(int hasil[]){
cout<<"\nHasil Terakhir : \n";
for(int i=0;i<2;i++){
cout<<hasil[i]<<endl;
}
}
int main(int argc, char** argv) {
int matrik[2][3]={3,4,1,5,6,7}, vektor[3]={3,2,4},hasil[2]={0};
kali(matrik,vektor,hasil);
cetakm(matrik);
cetakv(vektor);
cetak(hasil);
return 0;
}
- Output nya :
- Uji coba :
Jumat, 20 Mei 2016
Refleksi minggu ke sepuluh
Pada pertemuan ke-10 masih membahahas mengenai macam-macam sorting dan algoritma penyelesaiannya. Dan tambahannya yaitu membahas mengenai searching. Sorting dan searching adalah sesuatu yang berkaitan, dimana sorting di gunakan untuk mengurutkan data sedangkan searching di gunakan untuk mencari data. Jadi jika data yang ada sudah urut itu akan mempermudah dan menghemat waktu dalam pencarian data.
How To Solve per 9
1. Algorithm 5.1 The Two-Way Merge.
Algoritma :
if a[m]<b[n] then a[m+1]:=b[n+1]:=a[m];
i:=1;
j:=1;
nm:= n+m;
for k:= 1 to nm dobegin {merge next element }
if a[i]<b[j] thenbeginc[k]:=a[i];
i:=i+1end elsebeginc[k]:=b[j];
j:=j+1end
end
Program dengan C++ :
#include <iostream>
#include <cstdlib>
using namespace std;
int data[100];
void mergeSort(int awal, int mid, int akhir){
cout<<endl;
int temp[100], tempAwal = awal, tempMid = mid, i = 0;
while(tempAwal < mid && tempMid < akhir){
if(data[tempAwal] < data[tempMid])
temp[i] = data[tempAwal],tempAwal++;
else
temp[i] = data[tempMid],tempMid++;
i++;
}
while(tempAwal < mid) //kalau masih ada yang sisa
temp[i] = data[tempAwal],tempAwal++,i++;
while(tempMid < akhir)
temp[i] = data[tempMid],tempMid++,i++;
for(int j=0,k=awal;j<i,k<akhir;j++,k++) //mengembalikan ke array semula, tapi
cout<<data[k]<<' '<<temp[j]<<endl, data[k] = temp[j]; //sudah urut
}
void merge(int awal, int akhir) //membagi data secara rekursif{
if(akhir-awal != 1){
int mid = (awal+akhir)/2;
merge(awal, mid);
merge(mid, akhir);
mergeSort(awal, mid, akhir);
}
}
int main(){
int n;
cout<<"Masukan banya data = ";cin>>n;
cout<<"Masukan data yang akan di susun = ";
for(int i=0;i<n;i++)
cin>>data[i];
merge(0,n);
for(int i=0;i<n;i++)
cout<<data[i]<<' ';
return 0;
}
2. Algorithm 5.2 Sorting By Selection.
Algoritma:
Selection Sort
Algoritma ini mudah diterjemahkan ke dalam program computer tetapi memiliki kekurangan yaitu sort dengan menggunakan metode Seleksi membutuhkan ruang di memori untuk meyimpan 2 daftar lengkap.
Jika memiliki satu daftar nama dan meletakkan dalam urutan berdasarkan huruf bisa menggunakan pemdekatan umum sebagai berikut :
1. Temukan atau cari nama yang pertama kali datang dalam urutan huruf dan tulis di sheet kedua
2. Tandai nama yang keluar dari daftar asli
3. Lanjutkan perputaran ini sampai semua nama di daftar semula telah di coret dan ditulis di daftar kedua dimana di bagian daftar yang kedua ini nama-nama sudah terurut berdasarkan huruf.
Program C++ :
#include <iostream.h>
#include <conio.h>
int data[100],data2[100];
int n;
void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}
void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j–)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
}
cout<<”bubble sort selesai!”<<endl;
}
void exchange_sort()
{
for (int i=0; i<n-1; i++)
{
for(int j = (i+1); j<n; j++)
{
if (data [i] > data[j]) tukar(i,j);
}
}
cout<<”exchange sort selesai!”<<endl;
}
void selection_sort()
{
int pos,i,j;
for(i=0;i<n-1;i++)
{
pos = i;
for(j = i+1;j<n;j++)
{
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
cout<<”selection sort selesai!”<<endl;
}
void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j–;
}
data[j+1] = temp;
}
cout<<”insertion sort selesai!”<<endl;
}
void QuickSort(int L, int R) //the best sort i’ve ever had
{
int i, j;
int mid;
i = L;
j = R;
mid = data[(L+R) / 2];
do
{
while (data[i] < mid) i++;
while (data[j] > mid) j–;
if (i <= j)
{
tukar(i,j);
i++;
j–;
};
} while (i < j);
if (L < j) QuickSort(L, j);
if (i < R) QuickSort(i, R);
}
void Input()
{
cout<<”Masukkan jumlah data = “; cin>>n;
for(int i=0;i<n;i++)
{
cout<<”Masukkan data ke-”<<(i+1)<<” = “; cin>>data[i];
data2[i] = data[i];
}
}
void Tampil()
{
cout<<”Data : “<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<” “;
}
cout<<endl;
}
void AcakLagi()
{
for(int i=0;i<n;i++)
{
data[i] = data2[i];
}
cout<<”Data sudah teracak!”<<endl;
}
void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<”Program Sorting Komplit!!!”<<endl;
cout<<”*********************************************”<<endl;
cout<<” 1. Input Data”<<endl;
cout<<” 2. Bubble Sort”<<endl;
cout<<” 3. Exchange Sort”<<endl;
cout<<” 4. Selection Sort”<<endl;
cout<<” 5. Insertion Sort”<<endl;
cout<<” 6. Quick Sort”<<endl;
cout<<” 7. Tampilkan Data”<<endl;
cout<<” 8. Acak Data”<<endl;
cout<<” 9. Exit”<<endl;
cout<<” Pilihan Anda = “; cin>>pil;
switch(pil)
{
case 1:Input(); break;
case 2:bubble_sort(); break;
case 3:exchange_sort(); break;
case 4:selection_sort(); break;
case 5:insertion_sort(); break;
case 6:QuickSort(0,n-1);
cout<<”quick sort selesai!”<<endl;
break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}
getch();
}while(pil!=9);
}
3. Algorithm 5.3 Sorting By Exchange.
Soal
Diberikan urutan yang tidak beraturan dari kumpulan nilai n gunakan urutan dengan emnggunakan sorting by exchange
Penyelesaian :
Bubble Sort (Gelembung) merupakan metode pertukaran yang alur logikanya mirip dengan gelembung yaitu dengan cara membandingkan indeks Array yang pertama dengan indeks Array berikutnya secara terus menerus dan bergantian. Namun cara ini kurang efektif karena meskipun data sudah terurut proses perulangan yang terjadi akan terus berlangsung sampai batas perulangan itu berakhir. Ini adalah contoh alur alogaritmanya dalam kode program.
for (c=0; c<7; c++)
{ for (x=0; x<7; x++)
{if (menu[x]menu[x+1])
{term=menu[x];
menu[x]=menu[x+1];
menu[x+1]=term;
}
else {
menu[x]=menu[x];
}}}
Selection Sort (Maksimum/Minimum) merupakan metode pertukaran yang mencari nilai Maksimum/Minimum sekelompok data array yang nantinya nilai yang paling ujung akan diisolasikan dan tidak disertakan pada proses selanjutnya. Perhatikan contoh code berikut ini.
for(y=0; y<9; y++)
{max=0;
for (x=1; x<=b; x++)
{ if (A[x]>A[max])
{
max=x;
} }
if (A[max]>A[b])
{ term=A[b];
A[b]=A[max];
A[max]=term;
b--;
} else
{
b--;
}}
Insertion Sort (Sisip) meripakan metode pengurutan dengan cara menyisipkan nilai pada array pada posisi yang tepat. Untuk lebih jelasnya silakan lihat code dibawah ini.
for (k=1; k<9; k++)
{
term=L[k];
j=k-1;
while (term<=L[j])
{
L[j+1]=L[j];
j--;
}
if ((term >= L[j]) || (j=1))
{
L[j+1]=term;
}
else
{
L[j+1]=L[j];
L[j]=term;
}
4. Algorithm 5.4 Sorting By Insertion.
Algoritma :
1. Membangun sebuah array [1 .. n] elemen n.
2. Menemukan minimum dan meletakkannya di tempat untuk bertindak sebagai sentinel :
3. Sementara masih ada unsur-unsur yang akan dimasukkan di bagian memerintahkan melakukan
a. Pilih x elemen berikutnya untuk dimasukkan
b. Sementara x kurang dari sebelumnya unsur melakukan
c. Insert x pada posisi saat ini
for i:=2 to n do
begin {search for x's position then insert it}
j:=1; x:=a[i];
while x>a[j] do j:=j+1
for k:= i down to j+1 do a[k]:= a[k-1];
a[j]:=x
end
Program C++ :
#include <iostream.h>
void main(){
int data[100];
int a,b,c,d,x;
int temp;
cout<<"PROGRAM SORTING DATA "<<endl;
cout<<"---------------------------------------------"<<endl;
cout<<"Masukkan jumlah data : ? ";cin>>x;
for(d=1;d<=x;d++)
{
cout<<"Data ke-"<<d<<" = ";cin>>data[d];
}
cout<<"\nData Sebelum Diurutkan \n";
for(d=1;d<=x;d++){
cout<<"\t"<<data[d];
}
for(a=0;a<x;a++){
for(b=0;b<x;b++)
if(data[b]>= data[b+1])
{
temp=data[b];
data[b]=data[b+1];
data[b+1]=temp;
}
}
cout<<"\n\nData setelah diurutkan :\n";
for(c=0;c<x;c++)
cout<<"\t"<<data[c];
cout<<"\n\n---------------------------------------------"<<endl
}
system("PAUSE");
return EXIT_SUCCESS;
}
Langganan:
Postingan (Atom)