8
Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013 1/ 8 Laporan Praktikum TMD02 Algoritma dan Struktur Data dengan C Nama : Sukeipah Yuli Prihatin email : [email protected] Laporan : Take Home Test Soal 1 – Segitiga Terbalik Source Code: #include <stdio.h> #include <stdlib.h> int main(){ int n,i,j,k; n=10; k=1; for(i=10;i>0;i--){ if(i%2!=0){ for(j=1;j<=k;j++){ printf("%d ",k); } for(j=1;j<=i;j++){ printf("* "); } for(j=1;j<=k;j++){ printf("%d ",k); } printf("\n"); k++; } } system("pause"); return 0; } Deskripsi singkat: Soal pertama pada ujian adalah menampilkan segitiga seperti berikut: 1 * * * * * * * * * 1 2 2 * * * * * * * 2 2 3 3 3 * * * * * 3 3 3 4 4 4 4 * * * 4 4 4 4 5 5 5 5 5 * 5 5 5 5 5

Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Embed Size (px)

DESCRIPTION

Lembar Jawaban Take Home Test Bahasa Pemrograman C, dengan beberapa penyelesaian soal diantaranya:1. Membuat segitiga terbalik sesuai dengan tampilan yang diinginkan;2. Melakukan pengecekan kata palindrom;3. Perhitungan Pangkat dengan Fungsi Rekursif;4. Pengurutan nilai ascending dan descending dengan array

Citation preview

Page 1: Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013

1/ 8

Laporan Praktikum TMD02 Algoritma dan Struktur Data dengan C

Nama : Sukeipah Yuli Prihatin

email : [email protected]

Laporan : Take Home Test

Soal 1 – Segitiga Terbalik

Source Code: #include <stdio.h> #include <stdlib.h> int main(){ int n,i,j,k; n=10; k=1; for(i=10;i>0;i--){ if(i%2!=0){ for(j=1;j<=k;j++){ printf("%d ",k); } for(j=1;j<=i;j++){ printf("* "); } for(j=1;j<=k;j++){ printf("%d ",k); } printf("\n"); k++; } } system("pause"); return 0; }

Deskripsi singkat:

Soal pertama pada ujian adalah menampilkan segitiga seperti berikut:

1 * * * * * * * * * 1

2 2 * * * * * * * 2 2

3 3 3 * * * * * 3 3 3

4 4 4 4 * * * 4 4 4 4

5 5 5 5 5 * 5 5 5 5 5

Page 2: Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013

2/ 8

Untuk membuat tampilan segitiga diatas, maka diperlukan tiga perulangan,

terdiri dari:

1. Perulangan utama yang melakukan perulangan menurun sebagai

patokan nilai dari bintang-bintang yang akan ditampilkan yang

dinyatakan pada baris perintah for(i=10;i>0;i--).

2. Selanjutnya akan dikondisikan dengan persyaratan apabila hasil sisa

pembagian nilai indeks perulangan utama atau i dengan angka dua

bukan sama dengan 0 (atau bernilai ganjil), yang dinyatakan pada baris

perintah if(i%2!=0), maka akan melakukan eksekusi perulangan-

perulangan selanjutnya.

3. Perulangan kedua dan keempat yang melakukan perulangan menaik

sebanyak nilai k (atau variabel penanda jumlah pencetakan data) untuk

menampilkan nilai dari variabel k.

4. Perulangan ketiga yang melakukan perulangan menaik sebanyak nilai

indeks perulangan pertama untuk menampilkan karakter bintang.

Eksekusi program, sehingga kurang lebih seperti berikut:

Page 3: Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013

3/ 8

Soal 2 – Kata Palindrom

Source Code: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int i,panjang,j,bendera=0; char kata[25]; printf("Masukkan kata palindrom :"); gets(kata); panjang = strlen(kata); j = panjang-1; for(i=0;i<panjang;i++){ if(kata[i] == kata[j]){ bendera++; } j--; } if(bendera==panjang){ printf("Kata %s adalah palindrom!\n",kata); }else{ printf("Kata %s bukan palindrom!\n",kata); } system("pause"); return 0; }

Deskripsi singkat:

Soal kedua pada ujian adalah pengecekan sebuah kata apakah ia termasuk kata

palindrom atau bukan. Kata palindrom adalah kata yang susunan dan

pembacaan katanya dari depan atau dari belakang sama persis.

Source code diatas merupakan program yang mampu melakukan pengecekan

kata palindrom. Mulanya program meminta kata-kata palindrom yang akan

dicek dengan menggunakan perintah printf("Masukkan kata palindrom :"); dan

gets(kata);. Selanjutnya variabel inputan ini akan disimpan pada variabel char

kata[25]. Kemudian akan dilakukan pembacaan panjang karakter kata yang

dimasukkan dengan melakukan perintah strlen(kata); yang ditampung dalam

variabel panjang.

Setelah itu pengesetan nilai variabel j sebagai indeks elemen terakhir dari kata

yang dimasukkan. Selanjutnya akan dilakukan perulangan i mulai dari indeks 0

sampai kurang dari panjang kata dimana melakukan perbandingan antara kata

pada indeks elemen ke i atau perulangan dengan indez elemen ke j atau indeks

terakhir. Apabila terdapat kesamaan maka nilai variabel bendera (sebagai

penanda) akan melakukan increment, jika tidak maka tidak akan melakukan

apapun.

Dan terakhir, melakukan pengecekan apakah nilai variabel bendera sama

dengan panjang karakter, jika sama maka dapat dipastikan bahwa kata

tersebut adalah palindrom. Namun jika tidak maka kata tersebut bukan

Page 4: Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013

4/ 8

palindrom.

Eksekusi program kurang lebih akan seperti berikut:

Page 5: Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013

5/ 8

Soal 3 – Nilai Pangkat

Source Code: #include <stdio.h> #include <stdlib.h> int dipangkat(int n, int k){ if(k==0) return 1; else return n*dipangkat(n,k-1); } int main(){ int angka,pangkat; printf("Masukkan Bilangan Pokok :"); scanf("%d",&angka); printf("\nMasukkan Pangkat :"); scanf("%d",&pangkat); printf("\nHasil %d pangkat %d adalah %d\n", angka, pangkat, dipangkat(angka,pangkat) ); system("pause"); return 0; }

Deskripsi singkat:

Soal ketiga pada ujian adalah mencari sebuah nilai perpangkatan nilai dengan

menggunakan rekursi.

Pada source code diatas merupakan program yang mampu melakukan

perhitungan nilai pangkat dengan menggunakan rekursi.

Mulanya program meminta untuk memasukkan inputan bilangan pokok dan

pangkat yang ditandai dengan baris perintah printf("Masukkan Bilangan Pokok :");

scanf("%d",&angka); dan printf("\nMasukkan Pangkat :"); scanf("%d",&pangkat); dimana

kedua inputan tersebut ditampung secara berurutan dengan nama variabel angka

dan pangkat.

Selanjutnya pada baris perintah printf("\nHasil %d pangkat %d adalah %d\n", angka,

pangkat, dipangkat(angka,pangkat) );, akan mencari sebuah nilai hasil

perpangkatan dengan memanggil fungsi dipangkat(angka,pangkat) dengan nilai

variabel angka dan pangkat sebagai parameter fungsi.

Kedua variabel tersebut kemudian akan dibaca sebagai (secara berurutan)

variabel int n dan int k. Dimana pada fungsi tersebut akan dilakukan

pengkondisian apabila nilai variabel bla adalah 0 (pada baris perintah if(k==0) )

maka akan mengembalikan nilai 1 (pada baris perintah return 1;) jika tidak

maka akan mengembalikan nilai perhitungan dari pemanggilan ulang (rekursi)

dari fungsi dengan parameter n dan k yang dikurangi 1 (baris perintah return

n*dipangkat(n,k-1)). Karena pada dasarnya perpangkatan adalah perkalian nilai

bilangan pokok sebanyak k.

Eksekusi program antara lain seperti berikut:

Page 6: Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013

6/ 8

Soal 4 – Sorting Ascending Descending

Source Code: #include <stdio.h> #include <stdlib.h> #include <string.h> int deret[5]; void asc(); void desc(); void show(); int main(){ int i,pilih,bendera=1; for(i=0;i<5;i++){ printf("Masukkan data ke-%i :",i); scanf("%d",&deret[i]); } while(bendera==1){ printf("\nPilihan--------"); printf("\n1. ASC"); printf("\n2. DESC"); printf("\n0. ESC"); printf("\nPilih?"); scanf("%d",&pilih); switch(pilih){ case 0 : bendera=0; break; case 1: asc(); show(); break; case 2: desc(); show(); break; default: printf("Tidak sesuai"); break; } } system("pause"); return 0; } void asc(){ int i,j,temp; for(i=0;i<4;i++){ for(j=(i+1);j<5;j++){ if(deret[i]>deret[j]){ temp = deret[i]; deret[i] = deret[j]; deret[j] = temp; } } } printf("\n ASCENDING \n"); } void desc(){ int i,j,temp; for(i=0;i<4;i++){ for(j=(i+1);j<5;j++){ if(deret[i]<deret[j]){ temp = deret[i]; deret[i] = deret[j]; deret[j] = temp; } } } printf("\n DESCENDING \n");

Page 7: Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013

7/ 8

} void show(){ int i; for(i=0;i<5;i++){ printf("%d\n",deret[i]); } }

Deskripsi singkat:

Soal keempat pada ujian adalah mengurutkan sebuah deret angka agar dapat

melakukan sorting ascending atau descending.

Sebelumnya program akan meminta untuk melakukan input data deretan

angka yang akan disimpan dalam sebuah array dengan nama bla.

Setelah melakukan input, maka akan ditampilkan sebuah menu sederhana

untuk melakukan pengurutan atau sorting ascending (kecil – besar) atau

descending (besar – kecil) yang disajikan dalam sebuah fungsi yang berbeda-

beda.

Pada dasarnya kedua metode pengurutan ascending dan descending sama,

namun perbedaannya hanya pada letak perbandingannya saja. Sehingga kedua

fungsi tersebut memiliki dua buah perulangan dimana terdapat 2 buah

perulangan. Perulangan pertama atau i, merupakan perulangan yang dilakukan

hingga indeks kurang dari 4 kenapa? Karena pada perulangan kedua indeks

terakhir akan secara otomatis dijadikan sebagai nilai terakhir sehingga tidak

perlu untuk dibandingkan lagi.

Pada metode ascending, setelah perulangan akan dilakukan perbandingan

apakah nilai i lebih besar dari nilai elemen pada j? jika ya, maka nilai elemen i

akan di ganti dengan nilai elemen j yang memiliki nilai lebih kecil. Begitu juga

sebaliknya dengan metode descending, setelah perulangan akan dilakukan

perbandingan apakah nilai i lebih kecil dari nilai elemen pada j? jika ya, maka

nilai elemen i akan di ganti dengan nilai elemen j yang memiliki nilai lebih

besar.

Eksekusi program kurang lebih akan seperti dibawah ini:

Page 8: Lembar Jawaban Take Home Test Bahasa Pemrograman C Sukeipah

Program Alih Jenjang D3 ke D4 TMD Batch 6 2012-2013

8/ 8