Anda di halaman 1dari 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


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.

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.












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





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.

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.
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.
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.
{
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.
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.

Anda mungkin juga menyukai