Kamis, 10 April 2014

Sub Program

Dalam algoritma pemrograman pembahasan subprogram yaitu dalam programnya menampilkan lebih dari satu output.
Sebagai contoh,suatu pekerjaan yang dilakukan oleh seseorang tentu akan dilakukan oleh orang tersebut sesuai profesinya.
Misal,seorang direktur tentu akan memimpin suatu perusahaan dengan banyak pekerja dibawahnya. Mereka otomatis (bawahan direktur) akan melakukan pekerjaannya masing2 sesuai dengan yang mereka kerjakan,dan direktur tersebut hanya menerima hasil jadinya.
Dalam dalam proses tersebut bisa kita aplikasikan ke dalam algoritma subprogram,dengan membuat prosedurnya terlebih dahulu.
Kali ini saya punya contoh dalam subprogram flowchart raptor,yaitu suatu bilangan yang outputny akan menampilkan hasil +5.
Jadi misalnya kita inputkan angka 4,maka akan keluar hasilnya 9. Itu terjadi juga seperti contoh yang diatas. Membuat prosedur dan maka akan memunculkan hasil sesuai dengan perintah atau kerjanya dari inputannya tersebut.


Langkah-langkahnya :::
Tutorial Tahap membuat subprogram menggunakan RAPTOR
1. buka file latian 1.rap.. file bisa diunduh disini
2. klik kanan pada bagian main, pilih add procedure
2. Beri nama procedure, pada bagian paling atas
3. Ubah MODE nya menjadi Intermediate yah
4. Parameter input (dicentang) : x, parameter output (dicentang) : hasil
ini SS nya..






5. Isikan algoritma seperti menulis di main di dalam procedure tambah5
6. Kembali pada bagian main, kita panggil procedure tadi. hasilnya :


Gambar flowchart dibawah ini yaitu akan memunculkan output +5.



dalam flowchart subprogram dibawah ini,kita membuat dua flowchart dalam satu raptor. Yang flowchart pertama kita inputkan telebih dahulu variabelnya,kemudian kita outputkan hasilnya. Flowchart yang kedua kita membuat prosedur untuk pemanggilan variabel tersebut,kemudian di proses di dalam flowchart kedua. Maka kalau kita jalankan flowchart tersebut,hasilnya akan menginputkan kan suatu angkan dan hasil outputnya +5 (sesuai contoh diatas).

Rabu, 09 April 2014

7.5 Binary Tree Search

algoritmanya :
1. menetapkan kunci pencarian dan pointer ke akar pohon
2. mengatur negara tidak ditemukan dan membuat arus titik simpul pointer ke akar dan simpul pointer sebelumnya nihil
3. sementara kunci pencarian tidak ditemukan dan tiga masih jalan yang valid untuk mengikuti pohon lakukan
4. menetapkan apakah atau tidak mencari berhasil ditemukan kunci
5. kembali pointer ke node sebelumnya, node saat ini, dan variabel yang menunjukkan apakah atau tidak pencarian berhasil

jika diaplikasikan kedalam c++

#include
#include
#include
#include // dibutuhkan untuk system("cls");

struct tree_node
{
tree_node* left;
tree_node* right;
int data;

};

tree_node* root;

bool isEmpty()
{return root==NULL;}

void insert(int d)
{
tree_node* t = new tree_node;
tree_node* parent;
t->data = d;
t->left = NULL;
t->right = NULL;
parent = NULL;
if(isEmpty())root = t;
else
{
tree_node* curr;
curr = root;

while(curr!=NULL)
{
parent = curr;
if(t->data > curr->data) curr = curr->right;
else curr = curr->left;
}

if(t->data < parent->data)
parent->left = t;
else
parent->right = t;
}
}

void inorder(tree_node* p)
{
if(p!=NULL)
{
if(p->left)
inorder(p->left);
cout<<" "<data<<" "; if(p->right)
inorder(p->right);
}
else
return;
}


void print_inorder()
{
inorder(root);
}

int count(tree_node* p)
{
if(p==NULL)return 0;
return count(p->left) + count(p->right) + 1;
}

int height(tree_node* p)
{
if(p==NULL)return 0;
int u = height(p->left),v = height(p->right);
if(u > v)
return u+1;
else
return v+1;
}

void cari_terbesar(tree_node* p)
{
if(p==NULL)
return;
else
if(p->right==NULL)
{
cout<<" "<data<<" "; return; } else { cari_terbesar(p->right);
return;
}
}

int main()
{
root=NULL;
int ch,tmp;


while(1)
{
system("cls"); // Saya mengganti scrclr() karena dicompiler sy tidak ada fungsi tersebut
cout<>ch;
cout<>tmp;
insert(tmp);
break;
case 2 : cout< cout<<"Kunjungan In-Order"< cout<<"---------------"< print_inorder();getch();
break;
case 6 : cout<<"Menghitung Jumlah Node"< cout<<"------------------"< cout<<"Jumlah Node = "< getch();
break;
case 7 : cout<<"Menghitung Tinggi Pohon"< cout<<"------------------"< cout<<"Tinggi Pohon = "< getch();
break;
case 9 : cout<<"Mecari Data Terbesar"< cout<<"------------------"< cout<<"Data Terbesar Adalah = "< cari_terbesar(root);
getch();
break;
case 10 : return 0;
break;
default: cout<<"Pilihan yang Anda Masukkan salah!"< getch();
break;
}
}
}

7.4 Linked List Linsertion and Deletion

algoritma

1. menetapkan nama yang akan dimasukkan dan pointer ke kepala daftar

2. menginisialisasi simpul sebelumnya nihil dan arus simpul pointer ke kepala daftar

3. daftar pencarian untuk posisi penyisipan nama yang akan dimasukkan dan pointer retrun untuk logis predeccessor dan penggantinya node mereka

4. membuat node baru

5. menyimpan nama yang akan dimasukkan ke dalam simpul baru

6. menyesuaikan pointer yang dimasukkan node sehingga pointer sehingga menunjuk ke penerus logis

7. jika tidak memasukkan nama baru di depan daftar kemudian

8. kembali daftar diperbarui dan listhead

=> program nya :

#include
#include


using namespace std;


class stak
{
public:
stak();
void push();
void pop();
void cetak();
private:
int top;
char stack[6]; // asumsi max stack 100
char x;
};


stak::stak()
{
top=-1;
}
void stak::push()
{
if(top==5) cout<<"stack penuh"; else { cout << "Masukkan satu karakter "; cin >> x;
top++;
stack[top] = x;
}}


void stak::pop()
{
if(top < 0) { cout << "Stack kosong" << endl; return; } x = stack[top]; top--; cout << "Karakter yang di 'POP' adalah : " << x << endl; } void stak::cetak() { if(top < 0) { cout << "Stack kosong" << endl; return; } int i = 0; for(i = top; i >= 0; i--)
cout << stack[i] << endl; } int main(int argc, char** argv) { int input; stak a; cout << "MASUKKAN PILIHAN : " << endl; cout << "\tpush = 1" << endl; cout << "\tpop = 2" << endl; cout << "\tcetak = 3" << endl; cout << "\tquit = 4" << endl; while(true) { cout << "\nMasukkan pilihan: "; cin>>input;


if(input==1)
{
a.push();
}
else if(input == 2)
{
a.pop();
}
else if(input == 3)
{
a.cetak();
}
else if(input == 4)
{
break;
}
else
{
cout << "Perintah '" << input << "' tidak dikenal" < }
}
return 0;
}

7.3 Linked List Search

Dalam hal ini tentukan indeks paling awal dan indeks paling akhir, untuk membagi 2 elemen tersebut.
Indeks awal = i, dimana nilai i, pada awalnya bernilai 0;
Indeks akhir = j, dimana nilai j, pada awalnya bernilai sama dengan jumlah elemen.


jika diaplikasikan kedalam program c++

#include
#include

int main(int argc , char* argv[])
{
int x,i,k;
int l[10]={20,15,22,30,60,28,17,18,21,22};
printf(“Data yang dicari = “); scanf(“%d”,&x);
k=0;
for(i=0;i<9;i++)
{
if(l[i]==x)
{
printf("Data ditemukan di elemen %d\n",i);
k++;
}
}
if(k==0)
{
printf("Data tidak ditemukan\n");
}
printf("Jumlah data yang ditemukan = %d",k);
getch();
return 0;
}

7.2 Queue Addition And Deletion

Pada queue, operasi tersebut dilakukan di tempat yang berbeda. Penambahan elemen selalu
dilakukan melalui salah satu ujung, menempati posisi di belakang elemen-elemen yang
sudah masuk sebelumnya atau menjadi elemen paling belakang. Sedangkan penghapusan
elemen dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling
awal atau elemen terdepan. Sifat yang demikian dikenal dengan FIFO.

jika di aplikasikan kedalam program c++

#include
#include
void main()
{
int cek=0, data[20], x, hapus;
char pil;
do {
clrscr();
printf("1. Tambah Antrian\n");
printf("2. Hapus Antrian\n");
printf("3. Lihat Antrian\n");
printf("4. Keluar\n");
printf("Silahkan masukkan pilihan anda... ");
pil=getche();
if(pil!='1' && pil !='2' && pil !='3' && pil!='4' )
printf("\n\nAnda salah mengetikkan inputan...\n");
else
{
if(pil=='1') //PUSH
{
if(cek==20)
printf("\nAntrian Penuh\n\n");
else
{
printf("\nMasukkan nilai--> ");scanf("%i",&x);
data[cek]=x;
cek++;
}
}else
{
if(pil=='2') //POP
{
if(cek==0)
printf("\nAntrian kosong\n\n");
else
{
hapus=data[0];
for(int v=0;v
data[v]=data[v+1];
data[cek-1]=NULL;
cek--;
printf("\nData dgn nilai=%i terhapus.",hapus);
}getch();
}
else
{
if(pil=='3') //CEK DATA
{
if(cek==0)
printf("\nAntrian Kosong.\n\n");
else
{
printf("\n");
for(int z=0;z
{
printf(" | ");
printf("%i",data[z]);
printf(" | ");
}
}getch();
}}
}}
}while(pil!='4');
}

7.1 Stack Operations

stack adalah salah satu struktur data pada komputer,, disebut juga dengan tumpukan,,


jika diaplikasikan kedalam program c++


#include

#include

#include

#include

#include

int maks,top,pil,karakter,i;

int top2;

char elemen,aa,bb;

char stack[20];

char infiks[20];

char postfiks[20];

char stack2[10];

char hasil[20];

void delay();

void create(int x){

top = 0;

gotoxy(50,3);printf(” ”);

for(i=0;i<100;i++){ gotoxy(59,4+i);printf(” ”); } if(x<=20){ for(i=0;i<=x;i++){ if(i==x){ gotoxy(60,4+i);printf(“—”); } else{ gotoxy(59,4+i);printf(“| |”); } } } } void push(char aa){ gotoxy(50,2);printf(” ”); if(top == maks){ gotoxy(53,2);printf(“—-OVERFLOW—-”); } else{ stack[top]=aa; for(i=0;i<11;i++){ gotoxy(50+i,3);cout<<” “; gotoxy(51+i,3);cout<0;i–){

gotoxy(61,3+i);cout<<” “; gotoxy(61,2+i);cout<>pil;

switch(pil){

case 1:{

gotoxy(3,12);printf(“Masukan kapasitas stack (maksimal 20) : “);cin>>maks;

create(maks);

break;

}

case 2:{

if(maks==0){

gotoxy(3,12);printf(“Stack belum dibuat.Create stack terlebih dahulu”);

getch();

}

else{

gotoxy(3,12);printf(“masukan satu karakter : “);cin>>elemen;

push(elemen);

}

break;

}

case 3:{

if(maks==0){

gotoxy(3,12);printf(“Stack belum dibuat.Create stack terlebih dahulu”);

getch();

}

else{

pop();

}

break;

}

}

}

while(pil!=4);

}

void delay()

{

for(int y=1;y<100;y++)

for(int x=1;x<100;x++)

for(int p=1;p<30;p++)

cout<<”";

}

sekian dan terimakasih

6.6 Sub Linear Pattern Seach

6.5 Linear Pattern Search

6.4 Text Line Editing

Algoritma

1.establish baris teks, pola pencarian, dan pola penggantian dan panjang terkait dalam karakter
2. menetapkan nilai awal untuk posisi dalam teks teks lama, pola teks dan pencarian baru
3.while semua posisi pola dalam teks belum diperiksa apakah
4. salin karakter sisa di baris teks asli Garis
5.return diedit teks


jika diaplikasikan kedalam program c++

Pada text edit anda dapat memasukan perintah-perintah yang sudah ada dan mengkombinasikannya dengan output yang anda butuhkan/inginkan.
Berikut adalah contoh sederhana/dasar dari penggunaan C++


#include
#include
#include
main()
{
clrscr();
printf("\t\tHalo Apa Kabar?\n");
cout<<"\tSelamat Belajar C++"< printf("\n\tSelamat Mencoba");
getch();
}

6.3 Keyword Searching in Text

algoritma {}

1. membangun kata dan wordlenght panjang dari kata pencarian
2. menginisialisasi pertandingan menghitung pertandingan, set karakter sebelumnya dan mengatur pointer untuk kata Array i untuk 1
3. sementara tidak pada akhir baris lakukan
4. kembali kata pertandingan count pertandingan

jika diaplikasikan kedalam program c++

# include Main ( )
{
Pernyataan ;
………..
………..
}

Contoh :
#include
#include
void main ()
{
clrscr ();
cout <<”Hallo vivin .. welcome my blog.\n”; getch (); } sekian dan terimakasih :))) Diposkan oleh anni kholilah di 08.51 Tidak ada komentar: Link ke posting ini Kirimkan Ini lewat EmailBlogThis!Berbagi ke TwitterBerbagi ke FacebookBagikan ke Pinterest 6.2 Left And Right Justification of Text algoritma deskripsi: 1. membangun jaringan untuk dibenarkan, saat ini (lama) panjang panjang tion (baru) panjangnya. 2. termasuk tes untuk melihat apakah hal itu dapat dibenarkan. 3. menginisialisasi jumlah ruang dan mulai abjad baris 4. sementara karakter saat spasi lakukan 5. untuk dari awal abjad ke akhir baris lakukan 6. menghapus ruang apapun dari akhir baris 7. menentukan ruang tambahan yang akan ditambahkan dari panjang garis baru dan lama 8. sementara ruang masih ekstra untuk menambah dan mungkin untuk melakukannya lakukan 9. untuk dari awal sampai akhir baris lakukan 10. menyelesaikan dengan akhir baris jika diaplikasikan kedalam program c++ #include

using namespace std;

int main(int argc, char *argv[])
{
int a=87,b=32;
clrscr();
cout<<"penggunaan ios::left dan ios::right \n\n";
cout<<" rata sebelah kiri=";
cout<<"setiosflags(ios::left)< cout<<"setiosflags(ios::left)< cout<<"rata sebelah kanan =";
cout<<"setiosflags(ios::right)< cout<<"setiosflags(ios::right)<
system("PAUSE");
return EXIT_SUCCESS;

}

sekian dan terima kasih

6.2 Left and Right Justification or Text

algoritma

deskripsi:

1. membangun jaringan untuk dibenarkan, saat ini (lama) panjang panjang tion (baru) panjangnya.
2. termasuk tes untuk melihat apakah hal itu dapat dibenarkan.
3. menginisialisasi jumlah ruang dan mulai abjad baris
4. sementara karakter saat spasi lakukan
5. untuk dari awal abjad ke akhir baris lakukan
6. menghapus ruang apapun dari akhir baris
7. menentukan ruang tambahan yang akan ditambahkan dari panjang garis baru dan lama
8. sementara ruang masih ekstra untuk menambah dan mungkin untuk melakukannya lakukan
9. untuk dari awal sampai akhir baris lakukan
10. menyelesaikan dengan akhir baris

jika diaplikasikan kedalam program c++

#include

using namespace std;

int main(int argc, char *argv[])
{
int a=87,b=32;
clrscr();
cout<<"penggunaan ios::left dan ios::right \n\n";
cout<<" rata sebelah kiri=";
cout<<"setiosflags(ios::left)< cout<<"setiosflags(ios::left)< cout<<"rata sebelah kanan =";
cout<<"setiosflags(ios::right)< cout<<"setiosflags(ios::right)<
system("PAUSE");
return EXIT_SUCCESS;

}

sekian dan terima kasih

6.1 Text Line Length Adjustment

REFLEKSI ALGORITMA DAN PEMOGRAMAN KE ENAM

5.8 Hash Searching

5.7 Binary Search

algoritma

Pencarian pada data yang telah terurut menunjukkan kinerja yang lebih baik daripada pada data yang masih acak, hal ini karena dapat segera diketahui bahwa x tidak terdapat dalam larik bila ditemukan elemen yang lebih besar dari x.
Binary searching atau biasa disebut pencarian bagi dua merupakan metode pencarian yang paling efisien untuk data yang telah terurut. Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat.
Langkah-langkah pencarian bagi dua untuk data yang telah terurut secara ascending:
1. Bagi dua elemen larik yang telah terurut secara ascending, dengan cara menentukan elemen awal pencarian, elemen akhir pencarian dan elemen tengahnya.
- elemen awal pencarain (lo) = 1
- elemen akhir pencarain (hi) = n
- elemen tengah = (lo + hi) div 2



Misalnya terdapat larik L dengan 9 elemen yang telah terurut secara ascending seperti dibawah ini, maka kita akan menentukan elemen awal, akhir dan tengah pencariannya.


3
6 7 9 10
15 20 30 45




Lo = 1
Hi = 9
Mid = ( 1 + 9 ) div 2 = 5
2. Jika elemen yang dicari ada pada elemen di mid, maka ketemu.
3. Jika elemen yang ada di mid > elemen yang dicari, maka hi berubah
Hi = mid - 1
4. Jika elemen yang ada di mid < elemen yang dicari, maka lo berubah Lo = mid + 1 5. Ulangi langkah-langkah tersebut sampai data yang dicari ditemukan atau sampai elemen telah habis dibagi. Contoh: 3 6 7 9 10 15 20 30 45 Misalnya data yang dicari (x) = 7 1. lo = 1 hi = 9 mid = (1 + 9) div 2 = 5 L[5] = 10 L[mid] > x, maka hi berubah
2. hi = mid -1 = 5 – 1 = 4
lo = 1
mid = ( 1 + 4 ) div 2 = 2
L[2] = 6
L[mid] < x, maka lo berubah 3. lo = mid +1 = 2 + 1 = 3 hi = 4 mid = ( 3 + 4 ) div 2 = 3 L[3] = 7 L[mid] = x, maka data ditemukan Pseudocode Pencarian bagi dua: Algoritma bin_searching; Var lo,hi,mid,n,x,idx :integer; ketemu : boolean; L : array [1..100] of integer; Begin {misalnya telah terdapat sekumpulan data yng tersimpan di dalam larik L} lo  1; hi  n; ketemu  false; while (not ketemu) and (lo <= hi) do mid (lo + hi ) div 2; If L[mid] = x then ketemu  true Else If ( L[mid] > x ) then
lo  mid + 1
Else
hi  mid – 1;
End if
End if
End while
If (ketemu) then
Idx  mid
Else
Idx  -1;
End if
End.

5.6 Sorting by Patitioning

5.5 Sorting by Diminising Increment

soal

diberi satu set acak memerintahkan nomor n mengurutkan mereka ke dalam urutan non-menurun menggunakan kerang mengurangi metode penyisipan kenaikan.

deskripsi :
1. membangun array a [1 ... n] elemen n
2. mengatur ukuran kenaikan inch ke n
3. sedangkan ukuran kenaikan lebih besar dari satu melakukan
a) menurunkan inci dengan faktor 2
b) untuk semua rantai inci yang akan diurutkan pada kesenjangan inc lakukan
b.1 menentukan posisi k dari anggota kedua rantai saat ini
b.2 sementara ujung rantai saat ini belum mencapai, lakukan
2a. menggunakan mekanisme penyisipan untuk menempatkan x = a [k] di tempat
2.b bergerak ke atas rantai yang sekarang dengan meningkatkan k oleh inch

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


jika diaplikasikan kedalam c++

#include
void main()
{
int data[100];
int a,b,c,d,x;
int temp;


cout<<"PROGRAM SORTING DATA "<>x;


for(d=1;d<=x;d++) { cout<<"Data ke-"<>data[d];
}
cout<<"\nData Sebelum Diurutkan \n"; for(d=1;d<=x;d++){ cout<<"\t"<= 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 cout<<"\t"< cout<<"\n\n---------------------------------------------"< }
system("PAUSE");
return EXIT_SUCCESS;
}

sekian dan terimakasih

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

5.2 Sorting by Selection

algoritmanya{
}
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

jika diaplikasikan kedalam c++


#include
#include

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=i;j–)
{
if(data[j] data[j]) tukar(i,j);
}
}
cout<<”exchange sort selesai!”<temp && j>=0)
{
data[j+1] = data[j];
j–;
}
data[j+1] = temp;
}
cout<<”insertion sort selesai!”< 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>data[i];
data2[i] = data[i];
}
}

void Tampil()
{
cout<<”Data : “<>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!”< break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}
getch();
}while(pil!=9);
}

5.1 The Two Way Merge

algoritma {
}
if a[m]

int data[100];

void mergeSort(int awal, int mid, int akhir)
{
cout<
apa yang anda peroleh;;
>> belajar tentang sub program
>> pengkondisian

literatif
int faktorial(n:int) raptor pakekondisional
faktorial<-1<- awal for i<- to n do faktorial <- faktorial*i rekursi int faktorial(n: int) if n =1 then raptor pake loop faktorial <- 1 else faktorial<- n*faktorial (n-1) >> kuis alpro 1 tentang penjualan kain

apa yang anda tidak paham ?
>> materi tentang sub program.. karena baru pengenalan

solusi di atas
>> bertanya pada teman yang sudah berhasil membuat sub program
>> mencari referensi teman beda kampus
>> tanya pada kakak tingkat
>> browsing ke internet

Minggu, 06 April 2014

4.7 Longest Monotune Subsequance

soal

diberi satu set n nomor yang berbeda menemukan panjang monoton terpanjang meningkatkan subsequence

desskripsi :

1. membangun array a[1 ... n] dari elemen n

2. mengatur kondisi awal untuk subsequence mengakhiri di posisi pertama

3. untuk sisa (n-1) posisi array lakukan

(a) jika elemen saat ini kurang maksimal di set terpanjang sebelumnya kemudian
(a.1) mencari posisi dan nilai maksimum antara pendahulu
(a.2) memperbarui posisi dan panjang maksimum jika diperlukan jika tidak
Update posisi panjang lain dari maksimum dan panjang maksimum terjauh

4. tampilkan panjang tetap terpanjangdari subsequen

Kamis, 03 April 2014

Algoritma TURUN Bilangan 1 Sampai 9

Perulangan Dengan menggunakan FOR




Perulangan Dengan menggunakan REPEAT UNTIL





Perulangan Dengan menggunakan WHILE


Algoritma NAIK bilangan 1 sampai 9

Perulangan Dengan menggunakan FOR





Perulangan Dengan menggunakan REPEAT UNTIL





Perulangan Dengan menggunakan WHILE


Algoritmanya:

>> Naik << 1. Naik menggunakan perulangan for to... for i <-- 1 to 9 do write(i) end for 2. Naik menggunakan perulangan while... i <-- 1 while(i < 10) write(i) i <-- i + 1 end while 3. Naik menggunakan perulangan repeat until... i <-- 1 repeat write(i) i <-- i + 1 until(i>9)

>> Turun << 1. Turun menggunakan perulangan for to... for i <-- 9 to 0 do write(i) end for 2. Turun menggunakan perulangan while... i <-- 9 while(i < 0) write(i) i <-- i - 1 end while 3. Turun menggunakan perulangan repeat until... i <-- 9 repeat write(i) i <-- i - 1 until(i>0)

4.5 Partitioning an Array

soal

diberikan perintah array dalam bentuk acak dari n elemen. mambagi elemen menjadi
dua bagian sedemikian rupa sehingga elemen <= x berada di salah satu bagian dalam elemen >x berada di bagian.

deskripsi:

1. membangun array a[1 ... n] dan nilai pembagi dari x.

2. pindahkan 2 pembagi terhadap satu sama lain sampai sepasang salah ditempatkan elemen dalam perhitungan memungkinkan untuk kasus-kasus khusus x berada di luar kisaran nilai array

3. sedangkan jika dua perhitungan belum pernah bertemu atau menyeberang melakukan

(a) bertukar pasangan yang salah perhitungan dan memperpanjang kedua perhitungan ke dalam oleh salah satu elemen
(b) memperpanjang partisi kiri sementara elemen kurang dari atau sama dengan x
(c) memperpanjang partisi yang benar sementara elemen lebih besar dari x

4. tampilkan perhitungan indeks p and perhitungan array
soal

menghapus semua duplikat dari perintah array

deskripsi :
1. membangun array a[1 ... n] dari elemen n
2. mengatur indeks pengulangan i=2 untuk memungkinkan terminasi yang benar
3. membandingkan pasangan berurutan dari elemen sehingga duplikat ditemui kemudian menetapkan elemen tertinggi penhitungan j
4. sementara semua pasangan belum diperiksa lakukan
(a) jika pasangan selanjutnya tidak duplikasi lakukan
(a.1) tambahkan 1 perhitungan element tertinggi j
(a.2) kemudian pindahkan elemen dari pasangan ke posisi array tentukan dari elemen perhitungan array tertinggi.

4.3 Finding the maximum in a set

soal

menemukan nilai maksimun a dari nilai n

deskripsi :
1. membangun sebuah array a[1....n] dimana elemen n>=1
2. berikan nilai maksimum sementara max untuk elemen pertama array
3. sementara kurang dari n elemen array telah di anggap
(a) jika elemen selanjutnya elemen maksimum max maka itu nilai maksimun
4. menuliskan nilai maksimum dari n elemen array

4.2 Array Counting or Histigramming

Latihan soal

diberi satu set sebuah tanda ujian siswa (dalam kisaran 0 hingga 100) membuat hitungan jumlah siswa yang mungkin diperoleh masing-masing tanda

deskripsi :
1. meminta dan membaca jumlah n tanda untuk diproses
2. memberi inisial semua elemen yang akan di hitung array [0...100]
3. sementara masih ada yang akan di peroses, untuk melakukan perulangan
(a) membaca tanda berikutnya m
(b) menambahkan 1 perhitungan di lokasi m didalam array
4. tuliskan output nilai frekuensi perhitungan

4.1 Array Order Reversal

soal
mengatur ulang elemen dalam array sehingga muncul urutan terbaik

deskripsi :
1. membangun sebuah array a[a....n] dari n elemen yang akan dilindungi
2. menghitung r jumlah pertukaran yang diperlukan untuk memesan array
3. sementara masih ada pasang elemen array untuk ditukar
(a) menukar elemen i dengan elemen [n-i + 1]
4. mengembalikan array dilindungi undang-undang
latihan individu 3:

Algoritma Nilai Terkecil Terbesar dan Jumlah Semua Bilangan Positif. menentukan nilai terkecil, terbesar, dan jumlah semua bilangan positif yang dimasukkan.

algoritma
{algoritma menerima inputan sebuah bilangan bulat, menentukan bilangan terkecil, bilangan terbesar, dan menghitung jumlah semua bilangan bulat positif, menampilkan hasil penjumlahan bilangan bulat positif}

Deklarasi :
x,y : integer {data yang dibaca}
n : integer {banyak data masukan, >0}
min : integer {data terkecil/minimum}
maks : integer {data terbesar/maksimum}
i : integer {pencacah pengulangan}
jumlah : real {jumlah bilangan positif}


Deskripsi :
read(n)
read(x) {baca data pertama}
min ← x {asumsikan min adalah data pertama}
maks ← y {asumsikan maks adalah data terakhir}


for i ← 2 to n do {lanjutkan dengan ke-2 sampai ke-n}
read(x)
if x < min then min ← x if y > maks then
maks ← y
endif
while (x > 0) do
jumlah ← jumlah + x
read(x)
n ← n + 1
write(‘positif’)
endfor
jumlah ← x + 1
write(min)
write(maks)
write(jumlah)

Algoritma Penjumlahan Deret Pecahan

Latihan soal:

Algoritma untuk menghitung nilai dari 1 - 1/2 + 1/3 - 1/4 +....+ 1/n

algoritma:
{Menjumlahkan deret dengan bentuk pecahan 1-1/2+1/3-1/4+…1/n. Nilai n dibaca, ditentukan terlebih dahulu, algoritma menghitung hasil penjumlahan dan mencetak hasil jumlah}


Deklarasi :
jumlah : real {jumlah deret}
n : integer {penyebut pada suku terakhir, n >0}
i : integer {suku ke-i}
p : integer {penyebut suku ke-i}


Deskripsi :
read(n)
jumlah ← 0
i ← 1 {suku pertama}
p ← 1 {penyebut suku pertama}
while p ≤ n do
if i mod 2 = 1 then {suku ke-i ganjil}
jumlah ← jumlah + 1/p
else
jumlah ← jumlah – 1/p
endif
i ← i+1 {tinjau suku berikutnya}
p ← p + 1 {tinjau penyebut suku berikutnya}
endwhile
{p > n}
write(jumlah)

Bilangan Habis di Bagi 3 dan 5

soal

Buatlah algoritma dan program untuk mencetak bilangan yang habis dibagi 3 dan 5 antara 1 sampai dengan 100.

algoritma :
{algoritma menerima inputan bilangan 1-100, melakukan perulangan for, menyeleksi bilangan yang habis dibagi 3 dan 5, mencetak bilangan yang habis dibagi 3 dan 5}

deklarasi :
int proses ();
int total;

deskripsi :
read (a);
total=0;
for(int 1=0;1<100;1++) {if(i%3=0 && i%5==0)} {cout<
#include

using namespace std;
class ani {
private :
int total;

public :
int proses();
int output();
};

int ani::proses(){
total=0;
for(int i=1; i<=100; i++)
if (i %3==0 && i%5==0)
{cout< total+=1;}


cout<<" total dari bilangannya adalah : ";
cout< cout< return total;

}


int main()
{
cout<<"bilangan yang habis dibagi 3 dan 5 adalah : "< ani a;
a.proses();

system("PAUSE");
return EXIT_SUCCESS;
}

jika dirun akan tampil seperti dibawah ini :)

Kamis, 27 Maret 2014

Apa yang saya dapatkan dipertemuan empat ?
- mempelajari tentang perulangan, for, while, do while dan repeat until

Apa yang belum dapt saya pahami ?
- tentang perulangan, saya kurang paham terutama pada while dan do while
- kurang memahami konsep logika dan algoritma nya

Bagaimana Tindakan saya untuk menangani ketidak pahaman saya?
- bertanya pada teman
- mencari contoh - contoh di internet

Assalamualaikum wr.wb
kali ini saya akan berbagi ilmu. Bagaimana cara mengkonversi suhu dengan mnggunakan pilihan switch ??
bagaimana script pemrogramannya di c++?
langsung aja di coba :


#include
#include

using namespace std;

int main(int argc, char *argv[])
{
int c,f,k,r;
//merubah dari celcius
int rea,fah,kel;
fah=9*c/5+32;
rea=4*c/5;
kel=c+273;
//merubah dari reamur
int ciu,vin,heit;
ciu=5*r/4;
vin=r*4/5+273;
heit=r*9/4+32;
//merubah dari fahrenheit
int ac,bk,cr;
ac=(f-32)/1.8;
bk=(f+460)/1.4;
cr=(4-32)/2.25;
//merubah dari kelvin
int cc,rr,ff;
cc=k-273;
ff=k*1.8-460;
rr=(k-273)*0.8;
int pilih;
cout<<"======Selamat Datang Di C++======\n"; cout<<"1. Konversi Suhu Celcius"<>pilih;
switch(pilih) {
case 1:
cout<<"Masukan Nilai Celcius = ";cin>>c;
cout< cout< cout< break;
default:
cout<<" Anda Salah memasukan Pilihan, coba lagi\n";
break;
}

system("PAUSE");
return EXIT_SUCCESS;
}
Apa yang saya peroleh ?
Saya mendapatkan sebuah materi tentang Fotografi, berbisnis di bidang fotografi dan materi baru tentang konditional .

Apa yang tidak saya pahami ?
tentang pembuatan Else bertingkat.

Bagaimana saya mengatasi yang tidak paham ?
di internet melihat berbagai contoh-contoh yang saya belum pahami, dan bertanya kepada teman yang sudah di paham.

Mengkonversi Nilai Ke Huruf


Assalamualaikum wr.wb
kali ini saya akan berbagi ilmu. Bagaimana cara mengkonversi Nilai ke huruf ??
Misalnya :
0-20 E
21-40 D
41-60 C
61-80 B
81-100 A
langsung ke script nya di c++ :

#include
#include

using namespace std;

int main(int argc, char *argv[])
{
mulai:
int angka;
cout<<"Konversi Nilai Ke Huruf"<=21 && angka<=40) { cout<<"Nilai D"<=41 && angka<=60) { cout<<"Nilai C"<=61 && angka<=80) { cout<<"Nila B"<=81 && angka<=100)
{
cout<<"Nilai A"< }
else{
cout<<"Tidak Terdefinisi"< }
goto mulai;
system("PAUSE");
return EXIT_SUCCESS;
}

Rabu, 26 Maret 2014

Mencari Nilai Terbesar Dari Tiga Variabel


Assalamualaikum wr.wb
kali ini saya akan berbagi ilmu tentang bagaimana cara membuat program di c++ dengan mencari nilai Terbesar dari 3 Variabel.
misalkan saya punya nilai :
Nilai Pertama : 4
Nilai Kedua : 7
Nilai ketiga : 1
secara logika nilai terbesar adalah 7. bagaimana script pemrogramannya di c++?
langsung aja di coba :

#include
#include

using namespace std;

int main(int argc, char *argv[])
{
int a,b,c;
cout<<"Mencari Nilia Terbesar Dari 3 Variabel"<>a;
cout<<"Masukan Nilai Kedua :"; cin>>b;
cout<<"Masukan Nilai Ketiga :"; cin>>c;
if(a>b)
{
cout<<"Nilai" <c)
{
cout<<"Nilai" <a)
{
cout<<"Nilai" < }
else if(a==b&&b==c&&c==a)
{
cout<<"Nilai Sama"< }

system("PAUSE");
return EXIT_SUCCESS;
}
Apa yang saya peroleh ?
Tentang awal seperti Dasar-dasar pemrograman, tapi ini lebih mengarah ke algoritma nya yaitu menentukan langkah2 nya. sama seperti bermain game. kita harus menemukan langkah yang benar dan tepat.

Apa yang kurang dipahami ?
yang diberikan oleh Dosen kurang bisa saya pahami. Terutama membuat di Raptor nya .

Bagaimana saya mengatasinya ?
saya mencari / browsing di internet, kalau emang sudah mentok belum paham, saya bertanya kepada teman saya yang lebih paham.

Mencari Titik Tengah denga C++


Assalamualaikum wr.wb
kali ini saya akan berbagi ilmu tentang bagaimana cara membuat program di c++ dengan mencari titik tengah.
misalkan saya punya nilai :
Nilai x1 : 4
Nilai x2 : 5
Nilai y1 : 7
Nilai y2 : 6
jarak titik tengahnya adalah 11. bagaimana script pemrogramannya di c++?
langsung aja di coba :

#include
#include

using namespace std;

int main(int argc, char *argv[])
{
float x1,x2,x3,y1,y2,y3,j;
cout<<"Mencari Titik Tengah Sebuah Garis"<>x1;
cout<<"Masukan Nilai x2 :"; cin>>x2;
cout<<"Masukan Nilai y1 :"; cin>>y1;
cout<<"Masukan Nilai y2 :"; cin>>y2;
x3=(x1+x2)/2;
cout<<"hasil x3 : "< y3=(y1+y2)/2;
cout<<"hasil y3 : "< j=x3+y3;
cout<<"hasil jarak : "< system("PAUSE");
return EXIT_SUCCESS;
}

Mencari Titik Tengah


1. Mencari titik tengah sebuah garis yang ujung titiknya adalah A(x1,y1) dan B(x2,y2) Deklarasi :
x1, x2, y1, y2 = integer (input)
x3, y3 = integer (output)
Deskripsi : read (x1, x2, y1, y2) x3 <-- (x1+x2)/2 y3 <-- (y1+y2)/2 write(x3,y3)
contoh :
x1 = 4
x2 = 8
y1 = 9
y2 = 1
maka titik tengah = 6,5