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
nananina
Rabu, 14 September 2016
Senin, 23 Mei 2016
perkalian matrik
menghitung perkalian matrik dengan vektor. misal:
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
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
#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;
}
Jumat, 13 Mei 2016
sorting menggunakan metode insertion
- permasalahan
mengurutkan data dengan metode insertion.
misal:
0 0 0 0 → 4 → 4 0 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
- LINK LAINNYA
- selection sort(gieovani w p)
- bubble sort
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++
- program
- LINK LAINNYA
- selection sort(gieovani w p)
- insertion sort
#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;
}
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
Langganan:
Postingan (Atom)