tugas alpro


oke ini adalah link yang bisa Anda telusuri untuk melihat kerjaan-kerjaan saya di praktikum algoritma pemprograman II.

1. Bubble Sort

#include <stdio.h>
#define MAX 10
void CetakArray(int A[], int n){
int j;
for (j=0; j<n; j++){
printf(“A[%d]=%d”,j,A[j],”\n”);
}
}

int main(){
int A[MAX]={3, 5, 7, 4, 2, 9, 0, 1, 6, 8,};
int a, b;
int temp;
printf(“Daftar angka asli : \n”);
CetakArray(A, MAX);
for(a=0; a<(MAX-1); a++){
for(b=(MAX-1); b>=(a+1); b–){
if(A[b]<A[b-1]){
temp=A[b];
A[b]=A[b-1];
A[b-1]=temp;
}
}
}printf(“\n”);
CetakArray(A,MAX);
getch();
return 1;
}

download program here : BubbleSort.exe

2. Bubble Sort by Input

#include <stdio.h>
void CetakArray(int A[], int n){
int j;
for (j=0; j<n; j++){
printf(“A[%d]=%d”,j,A[j],”\n”);
}
}

int main(){
int a, b, x, temp, MAX;

printf(“mau berapa kamar, bang?”);
scanf(“%d”,&MAX);
int A[MAX];

for(x=0; x<(MAX); x++){
printf(“bilangan ke-%d : “,x);
scanf(“%d \n”,&A[x]);
}

printf(“Daftar angka asli : \n”);
CetakArray(A, MAX);
for(a=0; a<(MAX-1); a++){
for(b=(MAX-1); b>=(a+1); b–){
if(A[b]<A[b-1]){
temp=A[b];
A[b]=A[b-1];
A[b-1]=temp;
}
}
}printf(“\n”);
CetakArray(A,MAX);
getch();
return 1;
}

download program here : BubbleSort-input.exe

3. Bintang-bintangan

#include <stdio.h>

int main(){
int a=0, b;
printf(“berapa sok?”);
scanf(“%d”,&b);
for(a=0;a<=b;a++){
for(b=0;b<=a;b++){
printf(“*”);}
printf(“\n”);
}
getch();
}

4. Bom-boman

#include <stdio.h>

int main(){
int a=13, b, i=0;
printf(“sebutkan sebuah angka untuk mematikan bom ini /n”);
for(i=0;i<4;i++){
scanf(“%d”,&b);
if(b<a){printf(“ah terlalu kecil! ganti! /n”);}
else{if(b>a){printf(“ah gede banget?! ganti! /n”);}}
else{if(b=a){printf(“naaaaaaaah bomnya mati tuh! /n”);}}
}
getch();
}

5. Kalkulator salah

#include <stdio.h>

main()
{
float n1,n2,t,k,ka,b;
printf(“\n masukkan kedua angka… \n”);
scanf(“%f%f”,&n1,&n2);
t=n1+n2;
k=n1-n2;
ka=n1*n2;
b=n1/n2;
printf(“\n tambah %f”,t);
printf(“\n kurang %f”,k);
printf(“\n kali %f”,ka);
printf(“\n bagi %f”,b);
getch();
return(0);
}

6. Piramida Terbalik

#include<stdio.h>

int main(){
int i,j,k,n;
printf(“masukkan looping bilangan ganjil: “);
scanf(“%d”,&n);
for(i=1;i<=(2*(n-2));i+=2){
for(j=1;j<=i;j+=2){
printf(” “);
};
for(k=n;k>=i;k–){
printf(“*”);
}
printf(“\n”);
};
getch();
return 1;
}

7. Selection Sort

#include <stdio.h>

int main(){
int A[5]={15, 30, 24, 12, 4};
int i, j, temp;

printf(“Tampilkan angka = \n”);
for (i=0;i<5;i++){
printf(“A[%d]=%d \n”, i, A[i]);
}

for(i=0; i<=3; i++){
for(j=1+i; j<=4; j++){
if(A[i]>A[j]){
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
}

printf(“Tampilkan angka = \n”);
for (i=0;i<5;i++){
printf(“A[%d]=%d \n”, i, A[i]);
}

getch();
return 1;

}

download program here : selection_sort.exe

8. Rangkuman Searching

8. 1. Breadth-First Search

Breadth-first search (BFS) adalah algoritma pencarian yang jika dipadankan pada Binary Search Tree (BST), maka algoritma ini akan mulai memeriksa nilai yang terdapat di root node dan menelusuri semua yang bertetanggaan dengannya. Dengan kata lain, ini akan membuat computer mencari mulai dari root, jika berpindah level dilanjutkan dengan nilai yang terdekat dengan nilai yang terakhir diperiksa, hingga tidak ada lagi node bisa diperiksa, asal nilai pada setiap node adalah comparable atau berbeda satu sama lain.

Contoh pseudocode untuk BFS adalah sbb.:

procedure BFS(Graph,source):

2      create a queue Q

3      enqueue source onto Q

4      mark source

5      while Q is not empty:

6          dequeue an item from Q into v

7          for each edge e incident on v in Graph:

8              let w be the other end of e

9              if w is not marked:

10                 mark w

11                 enqueue w onto Q

Sedangkan, contoh source code program BFS adalah :

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main()
{
int V,E,i,v,w;
vector<int> adjlist[1000];
int dist[1000];
queue<pair<int,int> > Q;
pair<int,int> P;
cout << “Number of vertices: “;
cin >> V;
cout << “Number of edges: “;
cin >> E;
for (i=0; i<V; i++)
dist[i]=-1;
for (i=0; i<E; i++)
{
cout << “Enter two vertex numbers (0-based): “;
cin >> v >> w;
adjlist[v].push_back(w…‡
adjlist[w].push_back(v…‡
}
cout << “Starting vertex: “;
cin >> v;
Q.push(make_pair(v,0));
while (!Q.empty())
{
P=Q.front();
Q.pop();
if (dist[P.first]!=-1) //been here already
continue;
dist[P.first]=P.second…‡
for (i=0; i<adjlist[P.first].size(); i++)
Q.push(make_pa…‡
}
for (i=0; i<V; i++)
{
cout << “Distance from vertex ” << v << ” to vertex ” << i << “: “;
if (dist[i]==-1)
cout << “Unreachable” << endl;
else
cout << dist[i] << endl;
}
return 0;
}

8. 2. Depth-First Search


Berkebalikan dengan BFS, Depth-first Search (DFS) adalah algoritma yang memeriksa root node lalu menelusuri ke arah bawah atau menuju leaf terdalam pada BST. Tentu saja algoritma ini mengandung juga sifat backtracking mengingat kita harus kembali ke node-parent untuk masuk ke node terdalam pada level yang lebih tinggi dari yang terdalam. Langkah kerjanya adalah dengan menelusuri satu child node terlebih dahulu (yang terdalam).

Pseudocode untuk DFS :

    dfs(vertex v)
    {
    visit(v);
    for each neighbor w of v
        if w is unvisited
        {
        dfs(w);
        add edge vw to tree T
        }
    }

Contoh source code program DFS adalah :

/* Written by Sanchit Karve (born2c0de)

Contact me on born2c0de AT dreamincode DOT net

*/

#include<stdio.h>

#define MAX 5

int dfs(int adj[][MAX],int visited[],int start)

{

int stack[MAX];

int top=-1,i;

printf(“%c-“,start+65);

visited[start]=1;

stack[++top]=start;

while(top!=-1)

{

start=stack[top];

for(i=0;i<MAX;i++)

{

if(adj[start][i]&&visited[i]==0)

{

stack[++top]=i;

printf(“%c-“,i+65);

visited[i]=1;

break;

}

}

if(i==MAX)

top–;

}

return 0;

}

int main()

{

int adj[MAX][MAX]={{0,0,1,1,0},{0,0,0,0,0},{0,1,0,1,1},{0,0,0,0,1},{0,0,0,1,0}};

int visited[MAX]={0};

printf(“DFS Traversal : “);

dfs(adj,visited,0);

printf(“\n”);

return 0;

}

8.3. Sequential Search

Secara sederhana ini adalah algoritma pencarian yang langkah kerjanya adalah dengan menelusuri satu persatu ruang / array yang tersedia (baik terurut maupun tidak) hingga nilai yang dicari didapatkan. Kecepatan keterselesaian untuk algoritma ini tergantung pada berada-di-mana nilai yang dicari, di indeks / urutan pencarian awal, atau akhir.

Pseudocodenya adalah sbb. :

For each item in the list:
     if that item has the desired value,
         stop the search and return the item's location.
 Return Λ.

Symbol Λ mengartikan bahwa  adalah algoritma ini tidak berhasil menemukan nilai yang dicari atau algoritma ini berhenti.

Contoh Source-code untuk sequential search adalah :

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main(){
int arr[100],i,element,no;
clrscr();
printf(“\nEnter the no of Elements: “);
scanf(“%d”, &no);
for(i=0;i<no;i++){
printf(“\n Enter Element %d: “, i+1);
scanf(“%d”,&arr[i]);
}
printf(“\nEnter the element to be searched: “);
scanf(“%d”, &element);
for(i=0;i<no;i++){
if(arr[i] == element){
printf(“\nElement found at position %d”,i+1);
getch();
exit(1);
}
}
printf(“\nElement not found”);
getch();
}

 

#include <stdio.h>
#define MAX 10
void CetakArray(int A[], int n){
int j;
for (j=0; j<n; j++){
printf(“A[%d]=%d”,j,A[j],”\n”);
}
}int main(){
int A[MAX]={3, 5, 7, 4, 2, 9, 0, 1, 6, 8,};
int a, b;
int temp;
printf(“Daftar angka asli : \n”);
CetakArray(A, MAX);
for(a=0; a<(MAX-1); a++){
for(b=(MAX-1); b>=(a+1); b–){
if(A[b]<A[b-1]){
temp=A[b];
A[b]=A[b-1];
A[b-1]=temp;
}
}
}printf(“\n”);
CetakArray(A,MAX);
getch();
return 1;
}
Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s