Anda di halaman 1dari 9

TUGAS KULIAH

Analisa dan Algoritma Dosen : Ir. SJUKANI, MM

Tugas ini Dibuat dan Dianalisa oleh:

Dian Wirawan
NIM : 1211600729 HP : 085710215171 dianwirawan@gmail.com PROGRAM PASCA SARJANA TEKNOLOGI INFORMASI PROGRAM STUDI MAGISTER ILMU KOMPUTER UNIVERSITAS BUDI LUHUR JAKARTA 2013

Dian Wirawan - 1211600729

Halaman 1

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 1 2 2 2 4 4 X= A 2 4 Y= B 4 4 While (X != Y) If (X < Else Y) Y=Y+ X=X B +A 4 X=Y Cetak X 4 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

Dian Wirawan - 1211600729

Halaman 2

Pembuktian: No A B 1 2 3 4 5 6 7 8 9 10 4 4 4 4 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7 X= A 4 8 8 12 16 16 20 24 24 28 Y= B 7 7 14 14 14 21 21 21 28 28 While (X != Y) If (X < Else Y) Y=Y+ X=X B +A 8 8 14 12 14 16 14 16 21 20 21 24 21 24 28 28 28 X=Y Cetak X 8 8 12 16 16 20 24 24 28 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"; }

Dian Wirawan - 1211600729

Halaman 3

Output

Bukti: Cetak Segitiga Jika 3 pernyataan ini T No 1 2 3 4 Bil 1 2 7 3 1 Bil 2 2 3 2 2 Bil 3 2 5 8 3 (Bil1+Bil2) > Bil3 T T T F (Bil2+Bil3) > Bil1 T T F T (Bil1+Bil3) > Bil2 T T F F Selain itu cetak Bukan Segitiga Segitiga Segitiga Bukan 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)

Dian Wirawan - 1211600729

Halaman 4

Jawaban: Yang tercetak adalah, bila N diisi dengan 2 digit terakhir NIM (29) adalah 169 Pembuktian: No 1 2 3 4 5 N 29 29 29 29 29 X 20 30 40 50 60 T=N 29 49 79 119 169 while ( T <= Batas) Batas = N + 100 T = T + X X = X + 10 129 49 30 129 79 40 129 119 50 129 169 60 129 T > Batas Cout T 49 79 119 169 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

Dian Wirawan - 1211600729

Halaman 5

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

Dian Wirawan - 1211600729

Halaman 6

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

Dian Wirawan - 1211600729

Halaman 7

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;

Dian Wirawan - 1211600729

Halaman 8

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; } }

Dian Wirawan - 1211600729

Halaman 9