Lapak

24
IV. Tugas Praktikum Program II.1 Mencari nilai Maksimum dan minimum Listing /*Program II.1 Mencari Nilai Maksimum dan Minimum*/ #include<stdio.h> #include<conio.h> main() { int i, N, A[15], max=0, min=1; printf("Masukkan banyak bilangan (Maksimum 15) : ");scanf("%d", &N); if(N<=15) for(i=0; i<N; i++) { printf("Bilangan ke %d : ", i+1);scanf("%d", &A[i]); if(A[i]<min) min = A[i]; else if(A[i]>max) max = A[i]; } printf("Nilai maksimum adalah : %d\n", max); printf("Nilai minimum adalah : %d", min); getch(); }

description

alpro

Transcript of Lapak

IV. Tugas Praktikum

Program II.1 Mencari nilai Maksimum dan minimum

Listing

/*Program II.1 Mencari Nilai Maksimum dan Minimum*/

#include<stdio.h>

#include<conio.h>

main()

{

int i, N, A[15], max=0, min=1;

printf("Masukkan banyak bilangan (Maksimum 15) : ");scanf("%d", &N);

if(N<=15)

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

{

printf("Bilangan ke %d : ", i+1);scanf("%d", &A[i]);

if(A[i]<min) min = A[i];

else if(A[i]>max) max = A[i];

}

printf("Nilai maksimum adalah : %d\n", max);

printf("Nilai minimum adalah : %d", min);

getch();

}

Tampilan

Analisis

Program ini menentukan nilai maksimum dan minimum dari beberapa bilangan yang

diinput dari keyboard oleh pengguna menggunakan array 1 dimensi dengan jumlah

maksimal 15. Setelah dijalankan maka akan muncul tampilan untuk memasukkan

banyak bilangan yang akan diinput dari keyboard, setelah di enter maka akan muncul

nilai maksimum dan minimum dari bilangan yang diinput oleh pengguna.

II.2 Mengurutkan data secara naik (ascending) dan turun (descending)

menggunakan metode bubble short

Listing

/*Program II.2 Mengurutkan data secara naik (ascending) dan turun(descending)*/

#include <stdio.h>

#include <conio.h>

main()

{

int i, j, n, temp, A[15], x;

printf("Masukkan banyaknya data (Maksimum 15) : ");scanf("%d", &n);

if(n<=15)

//Ascending

for(i=1; i<=n; i++)

{

printf("Data ke %d : ", i);scanf("%d", &A[i]);

}

else

return main();

for(i=1; i<=n; i++)

{

for(j=n; j>=(i+1); j--)

{

if (A[j-1] > A[j])

{

temp=A[j-1];

A[j-1]=A[j];

A[j]=temp;

}

}

}

printf("\n");

printf("Data setelah diurutkan secara Ascending: ");

//Descending

for (i=1; i<=n; i++)

{

printf("%.d, ", A[i]);

}

for(i=1; i<=n; i++)

{

for(j=n; j>=(i+1); j--)

{

if (A[j-1] < A[j])

{

temp=A[j-1];

A[j-1]=A[j];

A[j]=temp;

}

}

}

printf("\n");

printf("Data setelah diurutkan secara Descending: ");

for (i=1; i<=n; i++)

{

printf("%.d, ", A[i]);

}

getch();

}

Tampilan

Analisa

Program ini akan menampilkan deretan nilai acak yang diinput oleh pengguna yang

kemudian akan diurutkan deretan bilangan tersebut secara naik (ascending) dan turun

(descending) dengan menggunakan salah satu metode mengurutkan data pada array

yakni bubble short. Dan jumlah maksimal elemen array pada program ini adalah 15.

IV. Tugas Praktikum

II.3 Menentukan nilai tengah (median) dari suatu kumpulan data

Listing

/*Program II.3 Menncari Nilai Median*/

#include <stdio.h>

#include <conio.h>

main()

{

int i, j, n, temp, A[15];

printf("Masukkan banyaknya data (Maksimum 15) : ");scanf("%d", &n);

if(n<=15)

//Ascending

for(i=1; i<=n; i++)

{

printf("Data ke %d : ", i);scanf("%d", &A[i]);

}

else

return main();

for(i=1; i<=n; i++)

{

for(j=n; j>=(i+1); j--)

{

if (A[j-1] > A[j])

{

temp=A[j-1];

A[j-1]=A[j];

A[j]=temp;

}

}

}

printf("\n");

printf("Data setelah diurutkan secara Ascending: ");

for (i=1; i<=n; i++)

{

printf("%.d, ", A[i]);

}

float a, b;

if (n%2 == 1)

{

b=A[(n)/2]+1;

printf("\n");

printf("Nilai Mediannya adalah :%.2f",b);}

if (n%2 == 0)

{ b=A[(n-1)/2]+A[n-1]/2.0;

printf("\n");

printf("Nilai Mediannya adalah : %.2f",b);}

getch();

}

Tampilan

Analisis

Pada Program ini kita akan menentukan nilai tengah (median) dari suatu data dengan

array 1 dimensi yang banyaknya elemen dari array tersebut beserta nilai setiap

elemennya diinput oleh pengguna. Data akan diurutkan terlebih dulu dengan

ascending setelah itu akan diambil nilai median dari urutan data tersebut.

II.3 Modifikasi Menentukan nilai tengah (median) dari suatu kumpulan data

Listing

/*Program II.3 Menncari Nilai Median*/

#include <stdio.h>

#include <conio.h>

main()

{

int i, j, n, temp, A[15];

printf("Masukkan banyaknya data (Maksimum 15) : ");scanf("%d", &n);

if(n<=15)

//Ascending

for(i=1; i<=n; i++)

{

printf("Data ke %d : ", i);scanf("%d", &A[i]);

}

else

return main();

for(i=1; i<=n; i++)

{

for(j=n; j>=(i+1); j--)

{

if (A[j-1] > A[j])

{

temp=A[j-1];

A[j-1]=A[j];

A[j]=temp;

}

}

}

printf("\n");

printf("Data setelah diurutkan secara Ascending: ");

for (i=1; i<=n; i++)

{

printf("%.d, ", A[i]);

}

float b;

if (n%2 == 1)

{

b=A[(n)/2]+1;

printf("\n");

printf("Nilai Mediannya adalah :%.2f",b);}

if (n%2 == 0)

{ b=A[(n-1)/2]+A[n-1]/2.0;

printf("\n");

printf("Nilai Mediannya adalah : %.2f",b);}

//Descending

for (i=1; i<=n; i++)

{

printf("%d, ", A[i]);

}

for(i=1; i<=n; i++)

{

for(j=n; j>=(i+1); j--)

{

if (A[j-1] < A[j])

{

temp=A[j-1];

A[j-1]=A[j];

A[j]=temp;

}

}

}

printf("\n");

printf("Data setelah diurutkan secara Descending: ");

for (i=1; i<=n; i++)

{

printf("%.d, ", A[i]);

}

float a;

if (n%2 == 1)

{

a=A[(n)/2]+1;

printf("\n");

printf("Nilai Mediannya adalah :%.2f",b);}

if (n%2 == 0)

{ a=A[(n-1)/2]+A[n-1]/2.0;

printf("\n");

printf("Nilai Mediannya adalah : %.2f",b);}

getch();

}

Tampilan

Analisa

Pada program ini adalah modifikasi dari program II.3 untuk mencari nilai tengah

(median) dengan menggunakan array 1 dimensi jika sebelum modifikasi pengurutan

data hanya dengan secara naik (ascending) maka dengan program modifikasi ini

pengurutan data ditambah dengan secara descending jadi nanti ada dua pengurutan

data, dengan banyaknya data atau elemen array beserta nilai dari setiap elemen array

diinput oleh pengguna. Setelah data diurutkan maka akan muncul nilai median setiap

urutan data.

V. Tugas Akhir

1. Buatlah program C untuk menghitung deret Fibonacci menggunakan array 1

dimensi

2. Buatlah program C untuk menampilkan deret Pascal menggunakan array 1

dimensi.

Jawab :

1. Program Deret Fibonacci

Listing

/*Program Tugas Akhir 1 - deret fibonacci dengan array*/#include<stdio.h>#include<conio.h>main(){ int i, n, A[15]; printf("Masukkan banyaknya data (Maksimum 15) : ");scanf("%d", &n); if(n<=15) for(i=1; i<=2; i++) { printf("Bilangan ke %d : ", i);scanf("%d", &A[i]); } else return main(); printf("Hasil Deret Fibbonaci : %d, %d, ", A[1], A[2]); for(i=3; i<=n; i++) { A[i]=A[i-2]+A[i-1]; printf("%d, ", A[i]); } getch(); }

Tampilan

Analisa

Pada Program ini kita akan menentukan deret Fibonacci dengan menggunakan

array 1 dimensi dimana banyaknya jumlah elemen array atau jumlah dari deret

Fibonacci beserta 2 nilai elemen awal di input oleh pengguna setelah diinput

maka akan muncul deret fibonaccinya.

2. Program Deret Pascal

Listing

/* Program Tugas akhir 2 - menentukan deret pascal*/#include<stdio.h>#include<conio.h>

int f(int N, int&l){ int k; l=1; for(k=1; k<=N; k++) l=k*l;}int kombinasi(int n, int r, int& komb){ int a, b, c; f(n,a);

f(r,b); f(n-r,c); komb=a/(b*c);}

main(){ int m,f,i,j,k,komb; printf("Jumlah Tingkat Segitiga Pascal : ");scanf("%d",&m); printf("\n"); for (i=1;i<=m;i++) { for(j=m;j>=i;j--) { printf(" "); } for(k=0;k<i;k++) { kombinasi(i-1,k,komb); printf("%2d ",komb); } printf("\n\n");} printf(" "); getch();}

Tampilan

Analisa

Pada Program ini akan menampilkan deret pascal dengan array 1 dimensi

dimana jumlah tingkat segitiga pascal akan ditentukan oleh pengguna itu

sendiri, setelah pengguna menginput jumlah tingkat segitiga pascal maka akan

muncul deret pascal. Program ini juga menggabungkan antara array 1 dimensi

dengan fungsi, dimana ada 2 fungsi yang didefinisikan yang letaknya di atas

program utama.

VI. Tugas Tambahan

Metode Pengurutan data dalam Array 1 dimensi, diantaranya adalah :

1. Quick sort

Pengurutan ini berprinsip pada devide dan conquer. Devide adalah suatu

langkah memilah masalah menjadi sub-masalah dalam proses rekursi, sedangkan

conquer proses menyelesaikan sub masalah tersebut, kemudian dilakukan pendekatan

terhadap masalah utama.

Metode quick sort adalah metode pengurutan yang menggunakan partisi. Pada

metode ini, data dibagi menjadi dua bagian, yaitu data disebelah kiri partisi selalu

lebih kecil dari data disebelah kanan. Namun data pada kedua partisi belum terurut,

sehingga untuk mengurutkannya, proses pengurutan dilakukan pada kedua partisi

secara terpisah. Selanjutnya, data di sebelah kiri dan kanan dipartisi lagi. Secara

singkat, prosedur partisi dapat dijabarkan sebagai berikut:

1. Pilih satu data sebarang sebagai data partisi, misalkan x.

2. Baca data dari ujung kanan ke kiri sampai ditemukan data a[i] sehingga a[i] < x.

(partisi kiri).

3. Baca data dari ujung kiri ke kanan sampai ditemukan data a[j] sehingga a[j] >= x.

(partisi kanan).

4. Tukar kedua data a[i] dan a[j].

5. Ulangi proses di atas sampai seluruh data terbagi dua bagian kiri yang lebih kecil

dari x dan kanan yang lebih besar dari x.

Prinsip dasar dari quicksort adalah melakukan partisi dari data, dalam dua

bagian. Kemudian secara rekursif melakukan sorting pada kedua bagian data tersebut.

Algoritma quicksort adalah sebagai berikut:

1. Tentukan unsur partisi yang diperlukan (gunakan data tengah sebagai unsur

partisi).

2. Partisi data dalam dua bagian yang dipisahkan oleh unsur partisi.

3. Secara rekursif sort terhadap kedua bagian data diatas dengan dengan metode

partisi (ulangi langkah 1 dan 2 untuk data sebelah kiri dan kanan).

2. Insertion sort

Insertion adalah pengurutan data yang dilakukan dengan cara membandingkan

data ke I (dimana I itu dimulai dari data kedua sampai dengan data terakhir) dengan

data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan

ke depan sesuai dengan posisi yang seharusnya.

Algoritma pengurutan ini memilah data yang diurutkan menjadi dua bagian.

Yang belum terurut (meja pertama) dan yang telah diurut (meja kedua). Elemen yang

pertama diambil dari bagian array yang belum diurutkan, kemudian diletakkan pada

posisi sesuai dengan bagian lain dari array yang telah diurutkan. Langkah tersebut

diulang hingga tidak ada lagi elemen yang tersisa pada meja pertama yang belum

terurut.

3. Selection sort

Merupakan Kombinasi antara sorting dan searching. Metode selection sort

merupakan perbaikan dari metode bubble sort dengan mengurangi jumlah

perbandingan. Selection sort merupakan metode pengurutan dengan mencari nilai

data terkecil dimulai dari data diposisi 0 hingga diposisi N-1. Jika terdapat N data dan

data terkoleksi dari urutan 0 sampai dengan N-1. Selama proses, perbandingan dan

pengubahan, hanya dilakukan pada indeks permbandingnya saja, pertukaran data

secara fisik terjadi pada akhir proses.sesuai dengan itu maka algoritma pengurutan

data secara Selection adalah sebagai berikut :

1. Cari data terkecil dalam interval j = 0 sampai dengan j = N-1

2. Jika pada posisi pos ditemukan data yang terkecil, maka tukarkan data

diposisi pos dengan data di posisi i jika k.

3. Ulangi langkah 1

4. Merge sort

Merge sort merupakan salah satu teknik sorting yang mengurutkan suatu data dengan

cara penggabungan. Merge sort juga menggunakan proses divide dan conquer pada

rekursi. Algoritma ini  tediri dari dua bagian utama, yaitu bagian pembagian list

menjadi sublist-sublist yang lebih kecil dan bagian sort (pengurutan) dan merge

(penggabungan) pada sublist-sublist tersebut.

1)      Divide:  membagi masalah menjadi beberapa submasalah yang memiliki

kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran

hampir sama),

2)      Conquer: memecahkan (menyelesaikan) masing-masing submasalah (secara 

rekursif), dan

3)      Combine: mengabungkan solusi masing-masing submasalah sehingga

membentuk solusi masalah semula.

Kesimpulan

Dari praktikum ini dapat disimpulkan bahwa Array adalah suatu variabel yang

merepresentasikan kumpulan data yang memiliki tipe data yang sama, dimana setiap

data menempati alamat memori yang berbeda yang disebut elemen array, sementara

untuk mengakses nilai dari suatu elemen array disebut indeks array dan selalu diawali

angka 0 pada bahasa C. Terdapat beberapa tipe array, seperti array konstan dimana

nilai sudah ditetapkan atau sudah diinisialisasi, array sebagai parameter dimana

berguna untuk membuat fungsi pencarian data dalam array, pencarian data dalam

elemen array, pengurutan pada elemen array. Sementara metode pengurutan data

tersebut diantaranya ada metode bubble sort dimana setiap elemen array dari yang

paling ujung dibandingkan dengan nilai elemen yang sebelumnya, dalam metode ini

ada 2 jenis pengurutan, yaitu ascending dan descending, dan ada juga metode

maksimum-minimum dimana nilai maksimum atau minimum disimpan ke bagian

ujung array (elemen pertama atau terakhir) lalu elemen diikat dan tidak diikutkan lagi

dalam proses selanjutnya.

Jadi array 1 dimensi dalam berbagai macam pengolahan data seperti mengurutkan

data, mencari nilai maksimum-minimum dapat digunakan dan penggabungan fungsi

dalam pengolahan data menggunakan array juga dapat dilakukan.