Tugas 1

13
NIM : 1311600520 NAMA : DEDEN ARDIANSYAH KELAS : B DOSEN PENGAMPU : Ir. Moh. Sjukani, MM PROGRAM MAGISTER ILMU KOMPUTER UNIVERSITAS BUDI LUHUR – JAKARTA TAHUN AKADEMIK 2013 EVALUASI MARTIKULASI ANALISA DAN DESAIN ALGORITMA

Transcript of Tugas 1

Page 1: Tugas 1

NIM : 1311600520

NAMA : DEDEN ARDIANSYAH

KELAS : B

DOSEN PENGAMPU : Ir. Moh. Sjukani, MM

PROGRAM MAGISTER ILMU KOMPUTER

UNIVERSITAS BUDI LUHUR – JAKARTA

TAHUN AKADEMIK 2013

EVALUASI MARTIKULASI

ANALISA DAN DESAIN ALGORITMA

Page 2: Tugas 1
Page 3: Tugas 1

Diperlihatkan algoritma untuk mencari jawaban sebuah permasalahan sebagai berikut :

Jawab Soal 1

1a. Jika A = 2; dan B = 4

X = A X = 2

Y = B Y = 4

- Iterasi 1 : 2 != 4; 2 < 4; maka X=X+A; X=2+2=4; maka X=4; Y=4 - Iterasi 2 : 4

!= 4; kondisi salah; maka keluar Loop.

Sehingga X benilai 4, dan akan tercetak 4 atau dengan algoritma diatas jika diinputkan 2 dan

4 adalah 4 karena nilai persekutuan terkecil dari 2 dan 4 adalah 4.

Soal-1.

Page 4: Tugas 1

Nilai Kelipatannya

A 2 4 6 8 10 12 14 16 18 20

B 4 8 12 16 20

Dari program diatas faktor untuk 2 dan 4 adalah 4 6 8 16 20 dst yang akan tampil pada program

diatas adalah 4 karena faktor yang terkecil dari kedua angka tersebut adalah 4.

1b. Jika A = 4; dan B = 7

X = A X = 4

Y = B Y = 7

- Iterasi 1 : 4 != 7; 4 < 7; maka X=X+A; X=4+4=8; maka X=8; Y=7

- Iterasi 2 : 8 != 7; 8 > 7; maka Y=Y+B; Y=7+7=14; maka X=8; Y=14

- Iterasi 3 : 8 != 14; 8 < 14; maka X=X+A; Y=8+4=12; maka X=12; Y=14

- Iterasi 4 : 12 != 14;12 < 14; maka X=X+A; Y=12+4=16; maka X=16; Y=14

- Iterasi 5 : 16 != 14; 16 > 14; maka Y=Y+B; Y=14+7=21; maka X=16; Y=21

- Iterasi 6 : 16 != 21; 16 < 21; maka X=X+A; X=16+4=20; maka X=20; Y=21

- Iterasi 7 : 20 != 21; 20 < 21; maka X=X+A; X=20+4=24; maka X=24; Y=21 - Iterasi 8 : 24 != 21; 24 > 21; maka Y=Y+B; Y=21+7=28; maka X=24; Y=28

- Iterasi 9 : 24 != 28; 24 < 28; maka X=X+A; X=24+4=28; maka X=28; Y=28

- Iterasi 10: 28 != 28; kondisi salah; maka keluar Loop Sehingga X benilai 28, dan akan tercetak 28

Dengan Pembuktian yang akan tercetak akan tercetak dengan algoritma diatas dengan input 4

dan 7 adalah 28

Nilai Kelipatannya

A 4 8 12 16 20 24 28 32

B 7 14 21 28 35

Dari program diatas faktor untuk 4 dan 7 adalah 28 dst yang akan tampil pada program diatas

adalah 28 karena faktor yang terkecil dari kedua angka tersebut adalah 28.

Page 5: Tugas 1

Bentuk Umum Algoritma Bahasa C++

Read(A,B,C)

If ((if ((A+B)<C &&((C+A)<B)

&&((B+C)<A)

{

Write( SEGITIGA)

}

else

{

Write (BUKAN SEGITIGA)

}

}

#include<iostream.h>

void main()

{

Int A,B,C ;

cin >> A >> B >> C;

if ((A+B)<C &&((C+A)<B) &&((B+C)<A)

{

cout << “ SEGITIGA “;

}

else

{

cout << “ BUKAN SEGITIGA”;

}

}

Diketahui Algoritma berikut ini, ditulis dalam Bahasa C++

Apa yang tercetak oleh algoritma disamping,

bila N diisi dengan 2 digit terakhir NIM Saudara

Susun algoritma untuk menginput 3 buah bilangan bulat yang masing-masing menyatakan panjang sebuah garis. Kemudian periksa ketiga buah garis tersebut, apakah dapat membentuk sebuah segitiga. Bila ketiga buah garis tersebut dapat membentuk sebuah segitiga, maka cetak perkataan “SEGITIGA”, tapi bila ketiga buah garis tersebut tidak dapat membentuk sebuah segitiga, maka cetak perkataan “BUKAN SEGITIGA”. Pada sebuah segitiga berlaku suatu kepastian bahwa : Total panjang dua buah sisi selalu lebih besar dari panjang satu sisi yang lain.

Soal-2.

Jawab Soal 2.

Soal-3.

#include<iostream.h> void main() { int N,X,T,Batas; N = ….. ; Batas = N + 100; X = 20; T = N; while( T <= Batas) { T = T + X; X = X + 10; } cout << T; }

Page 6: Tugas 1

Dua digit terakhir NIM=20

N = 20

Batas = N + 100 Batas = 20 + 100 = 120

X = 20

T = N T = 20

- Iterasi 1 : 20 <= 120; maka T=T+X T=20+20=40; X=X+10 X=20+10=30

- Iterasi 2 : 40 <= 120; maka T=T+X T=40+30=70; X=X+10 X=30+10=40

- Iterasi 3 : 70 <= 120; maka T=T+X T=70+40=110; X=X+10 X=40+10=50

- Iterasi 4 : 110 <= 120; maka T=T+X T=110+50=160; X=X+10 X=50+10=60

- Iterasi 5 : 160 > 120; kondisi salah, maka keluar Loop Sehingga T benilai 160,

dan akan tercetak 160.

Ali berangkat dari titik A ke titik B. Ali berangkat sebelum pukul 09:00:00 pagi. Badu mencatat

dalam selembar kertas, 3 (tiga) buah bilangan yang menyatakan Jam, Menit dan Detik pukul

(jam) keberangkatan Ali dari titik A. Setelah 8175 detik kemudian dihitung sejak waktu

keberangkatan, Ali tiba di titik B.Dengan memanfaatkan data keberangkatan yang dimiliki

Badu, susunlah algoritma untuk mencetak pukul berapa (Jam, Menit, Detik) Ali tiba di titik B.

#include<iostream.h>

void main()

{

int Waktu, Jam, JlhJam, Selisih, Menit, JlhMenit, Detik, Tiba;

Waktu = 8175;

Jam = Waktu / 3600;

JlhJam = Jam * 3600;

Selisih = Waktu - JlhJam;

Menit = Selisih / 60;

JlhMenit = Menit * 60;

Detik = Selisih - JlhMenit;

Tiba = Jam + 9;

cout << "Ali tiba pukul = ";

cout << "Jam : " << Tiba << ":" << Menit << ":"

<< Detik;

}

Jawab Soal-3.

Soal-4.

Jawab Soal-4.

Page 7: Tugas 1

Disebuah negara berlaku satuan uang logam (coin) sebagai berikut: quarter (25 sen) dime (10

sen), nickel (5 sen) dan penny (1 sen). Apabila sebuah toko ingin mengembalikan uang

belanjaan sebesar 64 sen, dengan jumlah keping coin yang paling sedikit, maka diperlukan 2

quarter, 1 dime dan 4 penny, (2*25+1*10+ 4*1) atau sebanyak 7 keping. Ia tidak boleh

mengembalikan dengan 6 dime dan 4 penny (6*10+4*1) atau 10 keping, walaupun nilainya

sama-sama 64 sen. Susun program untuk mencetak berapa keping masing-masing coin yang

diperlukan untuk uang kembalian. Nilai uang kembalian diketik melalui keyboard.

#include<iostream.h>

void main()

{

int quarter, dime, nickel, penny, uang, sisa1, sisa2;

cout << "Masukkan nilai uang : ";

cin >> uang;

quarter = uang / 25;

sisa1 = uang - ( 25 * quarter );

dime = sisa1 / 10;

sisa2 = sisa1 - ( 10 * dime );

nickel = sisa2 / 5;

penny = sisa2 - ( 5 * nickel );

Soal-5.

Jawab Soal-5.

Page 8: Tugas 1

cout << "Keping Quarter : " << quarter << endl;

cout << "Keping Dime : " << dime << endl;

cout << "Keping Nickel : " << nickel << endl;

cout << "Keping Penny : " << penny << endl;

}

Ali mempunyai banyak sekali uang logam. Uang logam tersebut hanya terdiri dari 2 macam nilai satuan

yaitu : 5, dan 3 sen. Ali mau mengambil beberapa keping uang logam tersebut senilai minimal 8 sen dan

maksimal 100 sen. Anda diminta membantu Ali untuk menentukan keping uang apa dan berapa keping

jumlahnya untuk memenuhi nilai yang akan diambil Ali, dengan ketentuan mendahulukan mengambil

keping dengan nilai tertinggi agar didapat jumlah keping yang paling sedikit.

Untuk itu Anda diminta membuat algoritma yang menginputkan sebuah nilai integer yang menyatakan

nilai uang yang akan diambil Ali, kemudian cetak berapa keping uang logam bernilai 5 sen, dan berapa

keping yang bernilai 3 sen, agar terpenuhi jumlah nilai yang akan diambil Ali. Bila nilai yang diinput

kurang dari 8, atau lebih dari 100, maka cetak perkataan “DATA SALAH” dan proses dihentikan.

Algoritma dalam bahasa C++

#include<iostream.h>

void main()

{ int koin, P5, P3, S;

Soal-6.

Jawab Soal-6.

Page 9: Tugas 1

cout << "Masukkan jumlah koin : ";

cin >> koin;

if (koin >= 8 && koin <= 100)

{

S = koin % 5;

if(S == 0)

{

P5 = koin / 5;

P3 = 0; }

else

{

P5 = koin / 5; while(P5

>= 0)

{

S = koin - (P5 * 5);

if(S % 3 == 0)

{

P3 = S / 3;

break; }

else {

P5--;

}

}

}

cout << "Jumlah koin 5 sen : " << P5 << " keping" << endl;

cout << "Jumlah koin 3 sen : " << P3 << " keping" << endl;

} else

{

cout << "Maaf, Data yang Anda input salah !";

}

}

Titik A dan titik B dihubungkan hanya oleh sebuah jalan yang panjangnya = 1000 m. Ali berangkat dari

titik A menuju titik B tepat jam 08:00:00 pagi dengan kecepatan tetap 5 m/detik. Tetapi 10 detik

kemudian, kecepatannya naik 2m/detik menjadi 7m/detik. Demikian seterusnya, setiap 10 detik

Soal-7.

Page 10: Tugas 1

kecepatan Ali naik 2m/detik. Tepat pada jam yang sama (08:00:00) Badu berangkat dari titik B menuju

titik A dengan kecepatan tetap 10 m/detik, tidak pernah berubah. Susun algoritma untuk mencetak

berapa detik setelah keberangkatan, Ali dan Badu bertemu, berpapasan dijalan. Catatan : satuan waktu

terkecil adalah dalam detik.

Algoritma dalam bahasa C++

#include<iostream.h>

void main ()

{

int jarak, det, ketemu, stat, V1, V2, T0, sb, TV1, bb, ta,

stv;

jarak = 1000;

V1 = 5;

V2 = 10;

T0 = 10; sb

= 0; TV1 =

V1+2;

bb = 0; stv

= jarak; stat

= 0; ta = 0;

cout << "Jarak Antara Titik A dan Titik B = " << jarak << "

meter" ;

cout << "\nKecepatan Awal Ali = " << V1 << "

m/dt";

cout << "\nKecepatan Ali Naik menjadi = " << TV1 << "

m/dt";

cout << "\nKecepatan Awal Badu = " << V2 << "

m/dt";

cout << "\nSelang Waktu Perubahan Ali = " << T0 << "

detik \n";

for(det=1; ; det++)

{

if(ta <= jarak || stv >= 0)

{

if(ta <= jarak)

{

ta += V1;

}

if(stv >= 0)

{

stv -= V2;

}

if(ta >= stv && stat == 0)

Jawaban Soal-7.

Page 11: Tugas 1

{

ketemu = det;

stat = 1;

}

if(T0 != 0)

{

if(det % T0 == 0)

{

V1 += TV1;

}

}

if(sb != 0)

{

if(det % sb == 0)

{

V2 += bb;

}

}

}

else break;

}

cout << "\nJadi Pertemuan Ali dan Badu pada waktu ke :" <<

ketemu << " detik";

}

Sebuah kebun besar ditanami pohon bibit sebanyak n baris. Setiap baris terdiri dari n pohon, sehingga

kebun besar ini dapat kita sebut ukurannya = n x n. Pohon-pohon tersebut kemudian dicabut dan

ditanam ulang menjadi 13 buah kebun dengan ukuran lebih kecil yaitu setiap kebun kecil terdiri dari m

baris dan setiap baris terdiri dari m pohon. Setelah terbentuk 13 kebun kecil ukuran m x m, ternyata

pada kebun besar masih tersisa 1 pohon.

Soal-8.

Page 12: Tugas 1

Susun program untuk mencetak berapa jumlah pohon semula yang ada di kebun besar.

Algoritma Dalam Bahasa C++

#include<iostream.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h> #pragma

argsused

int main(int argc, char* argv[])

{

int a, b, n[400], m, index, status;

status = 0; for(a=0;

a<400; a++) n[a] = a*a;

for(b=1; b<400; b++)

{

m = (b * b * 13) + 1;

printf("=> Untuk m = %d, maka jumlah pohon di kebun besar

= %d\n",abs(b),abs(m));

}

for(a=1; a<400; a++)

{

for(b=1; b<400; b++)

{

m = (b * b * 13) + 1; if(m

== n[a])

{

printf("=> m Pada kebun kecil = %d \n",b);

printf("=> n Pada kebun besar = %d \n",a);

printf("=> Jumlah pohon di kebun besar = %d

\n",abs(n[a]));

status = 1; break;

}

}

}

if(status == 0)

{

printf("Sampai dengan bilangan

kombinasi yang cocok.",b);

}

getch();

return 0;

}

ke %d tidak ditemukan

Jawaban Soal-8.

Page 13: Tugas 1