Algoritma-DianWirawan -1211600729

9
Dian Wirawan - 1211600729 Halaman 1 TUGAS KULIAH Analisa dan Algoritma Dosen : Ir. SJUKANI, MM Tugas ini Dibuat dan Dianalisa oleh: Dian Wirawan NIM : 1211600729 HP : 085710215171 [email protected] PROGRAM PASCA SARJANA TEKNOLOGI INFORMASI PROGRAM STUDI MAGISTER ILMU KOMPUTER UNIVERSITAS BUDI LUHUR JAKARTA ©2013

description

Tugas Matrikulasi Mkom

Transcript of Algoritma-DianWirawan -1211600729

Page 1: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 1

TUGAS KULIAH

Analisa dan Algoritma

Dosen : Ir. SJUKANI, MM

Tugas ini Dibuat dan Dianalisa oleh:

Dian Wirawan

NIM : 1211600729

HP : 085710215171

[email protected]

PROGRAM PASCA SARJANA TEKNOLOGI INFORMASI

PROGRAM STUDI MAGISTER ILMU KOMPUTER

UNIVERSITAS BUDI LUHUR

JAKARTA

©2013

Page 2: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 2

SOAL 1

Sintaks Umum :

#include <iostream.h> void main() {

int A, B, X, Y;

cin >> A >> B; X = A;

Y = B;

while (X != Y) { if (X < Y)

X = X + A;

else

Y = Y + B; }

cout << X;

}

Pertanyaan :

1.a. Apa yang tercetak bila : untuk A diinputkan 2, dan untuk B diinputkan 4

Jawab:

1.a. Yang tercetak bila : A di input 2, dan B diinput 4, adalah 4

Pembuktian:

No A B X =

A

Y =

B

While (X != Y)

Cetak X If (X <

Y)

X = X + A

Else

Y = Y +

B

1 2 4 2 4 4 4

2 2 4 4 4 X = Y kondisi sudah terpenuhi pada

perulangan ke - 2

Pertanyaan :

1.b. Apa yang tercetak bila : untuk A diinputkan 4, dan untuk B diinputkan 7

Jawaban: 1.b. Yang tercetak bila : A di input 4, dan B diinput 7, adalah 28

Page 3: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 3

Pembuktian:

No A B X =

A

Y =

B

While (X != Y)

Cetak X If (X <

Y)

X = X

+ A

Else Y = Y +

B

1 4 7 4 7 8 8

2 4 7 8 7 8 14 8

3 4 7 8 14 12 14 12

4 4 7 12 14 16 14 16

5 4 7 16 14 16 21 16

6 4 7 16 21 20 21 20

7 4 7 20 21 24 21 24

8 4 7 24 21 24 28 24

9 4 7 24 28 28 28 28

10 4 7 28 28 X = Y Kondisi Sudah Terpenuhi, pada perulangan ke 10

SOAL 2

Pertanyan :

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.

Algoritma dituangkan ke dalam bahasa C++

#include <iostream.h> void main() {

int bil1, bil2, bil3;

cout <<"Masukan Bilangan Bulat ke -1 =";

cin >> bil1; cout <<"Masukan Bilangan Bulat ke -2 =";

cin >> bil2;

cout <<"Masukan Bilangan Bulat ke -3 ="; cin >> bil3;

if ((( bil1 + bil2) > bil3) && (( bil2 + bil3) > bil1) && (( bil1 + bil3) >

bil2)) cout << "SEGITIGA";

else

cout << "BUKAN SEGITIGA";

}

Page 4: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 4

Output

Bukti:

No Bil 1 Bil 2 Bil 3

Cetak “Segitiga” Jika 3 pernyataan ini T Selain itu cetak

“Bukan

Segitiga”

(Bil1+Bil2)

> Bil3

(Bil2+Bil3) >

Bil1

(Bil1+Bil3) >

Bil2

1 2 2 2 T T T Segitiga

2 7 3 5 T T T Segitiga

3 3 2 8 T F F Bukan

4 1 2 3 F T F Bukan

SOAL 3 Kode :

#include<iostream.h>

void main() { int N,X,T,Batas;

N = 95;

Batas = N + 100;

X = 20; T = N;

while ( T <= Batas)

{ T = T + X; X = X + 10;

}

cout << T; }

Pertanyaan :

Apa yang tercetak oleh algoritma diatas, bila N diisi dengan 2 digit terakhir NIM Saudara (1211600729)

Page 5: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 5

Jawaban:

Yang tercetak adalah, bila N diisi dengan 2 digit terakhir NIM (29) adalah 169

Pembuktian:

No N X T = N Batas =

N + 100

while ( T <= Batas) Cout T

T = T + X X = X + 10

1 29 20 29 129 49 30 49

2 29 30 49 129 79 40 79

3 29 40 79 129 119 50 119

4 29 50 119 129 169 60 169

5 29 60 169 129 T > Batas Keluar dari perulangan

SOAL 4

Soal :

1. Tujuan Ali dari Titik A ke Titik B

2. Waktu keberangkatan 09:00:00 3. Badu mencatat 3 buah bilangan yang menyatakan jam, menit, detik waktu

keberangkatan Ali

4. Setelah 8175 detik Ali tiba di Titik B

Pemecahan Soal :

1. Waktu berangkat dapat dipecah menjadi 9 jam, 0 menit, dan 0 detik 2. Total waktu yang diperlukan 8175 detik, maka 8175 detik setara dengan 2

jam. Sisa 975 detik, dimana 1 menit setara dengan 60 detik, maka 975 detik

setara dengan 16 menit. Sisa 15 detik (2:16:15)

3. Ali akan tiba di titik B pukul 11:16:15 (9:00:00 ditambah 2:16:15)

Algoritma dituangkan ke dalam C++ :

#include<iostream.h> void main()

{ int J, M, D, TotWaktu, Jam, Menit, Detik;

J = 9; M = 0; D = 0; TotWaktu = 8175; Jam = TotWaktu / 3600;

Menit = (TotWaktu - 3600 * Jam) / 60;

Detik = TotWaktu - (3600 * Jam + 60 * Menit);

J = J + Jam; M = M + Menit;

D = D + Detik;

cout << "Ali tiba di titik B Pukul " << J << ":" << M << ":" << D; }

Output

Page 6: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 6

SOAL 5

Soal :

1. 1 Quarter = 25 sen

2. 1 Dime = 10 sen 3. 1 Nickel = 5 sen

4. 1 Penny = 1 sen

Pertanyaan :

Susun program untuk mencetak masing-masing keping koin yang diperlukan

untuk kembalian.

Kode Program :

#include<iostream.h>

void main() { int Kem, Qua, Dim, Nic;

cout << "Input uang kembalian : ";

cin >> Kem; Qua = Kem/25;

Kem=Kem-Qua*25;

Dim = Kem/10; Kem=Kem-Dim*10;

Nic = Kem/5;

Kem=Kem-Nic*5;

cout << " " << Qua << " " << Dim << " " << Nic << " " << Kem; }

Output

SOAL6

Kasus :

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

Page 7: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 7

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.

Kode Program :

#include<iostream.h>

#include<stdlib.h>

void main() { int nilai, koin5, koin3;

koin5 = 0;

koin3 = 0;

cout << "Nilai uang : ";

cin >> nilai;

if ((nilai < 8) || (nilai > 100)) {

cout << "DATA SALAH";

exit(1); }

while (nilai > 0) {

if (nilai % 5 == 0) { koin5 = nilai / 5;

nilai = 0;

} else { koin3 = koin3 + 1;

nilai = nilai - 3;

}

} cout << koin5 << " " << koin3;

}

Output

Page 8: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 8

SOAL7

Soal : 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 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.

Kode Program :

#include <iostream.h>

void main() { int titikA, titikB, kecA, kecB, waktu;

titikA = 0; titikB = 1000;

kecA = 5;

kecB = 10;

waktu = 0;

while (titikA<titikB) {

titikA = titikA + kecA; titikB = titikB - kecB;

waktu = waktu + 1;

if(waktu % 10 == 0) kecA = kecA + 2;

}

cout << "Berpapasan detik ke " << waktu; }

Page 9: Algoritma-DianWirawan -1211600729

Dian Wirawan - 1211600729 Halaman 9

SOAL8 Kasus :

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. Susun program untuk mencetak berapa jumlah pohon semula yang ada di kebun

besar.

Kode Program :

#include<stdlib.h>

void main() { int x, y, x2, y2;

x = 1;

while (x > 0) { y = 1;

while (y > 0) {

y2 = 13*y*y+1; x2 = x * x;

if (y2==x2) {

cout <<"Jumlah pohon semula yang ada di kebun

besar adalah"<< " "<< x2; exit(1);

}

if (y2>x2) { y=0;

break;

} y=y+1;

}

x=x+1;

} }