TUGAS MARTIKULASI
ANALISA DAN DESAIN ALGORITMA
Oleh :
Nim :1411601881
Nama : Muhammad
Alfi Mahyuarsony
Kelas :
XB
PROGRAM
STUDI MAGISTER ILMU KOMPUTER (MKOM)
FAKULTAS
PASCASARJANA
UNIVERSITAS
BUDI LUHUR
Februari 2015
Daftar Isi
Cover..........................................................................................................................i
Daftar Isi...................................................................................................................ii
Soal no 1....................................................................................................................1
Program dalam bahasa C++......................................................................................1
Hasil Programnya......................................................................................................4
Soal no 2...................................................................................................................4
Program dalam bahasa C++.....................................................................................5
Hasil Programnya.....................................................................................................6
Soal no 3...................................................................................................................6
Program dalam bahasa C++......................................................................................7
Hasil Programnya......................................................................................................8
Soal-1.
Titik A dan titik B dihubungkan
hanya oleh sebuah jalan yang panjangnya = 1100 m. Ali berangkat dari titik A
menuju titik B tepat jam 08:00:00 pagi dengankecepatan tetap 10 m/detik.
Sepuluh detik kemudian, yaitu pukul (08:00:10) Badu berangkat dari titik B
menuju titik A dengan kecepatan awal 5 m/detik.
Tetapi 10 detik kemudian, kecepatannya naik 2m/detik menjadi 7m/detik.
Demikian seterusnya, setiap 10 detik kecepatan Ali naik2m/detik.
Susun algoritma untuk mencetak
pukul berapa (Jam : Menit : Detik ) Ali dan Badu bertemu, berpapasan di
jalan.Bila Ali dan Badu berpapasan di titik C, cetak jarak Titik A dengan Titik
C.
Jawab
:
Program
dalam Bahasa C++ :
#include
void main ()
{
int jarak, det, ketemu, stat, V1, V2,
T0, sb, TV1, bb, ta, stv;
jarak = 1100;
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 Awalbadu = " << V1
<< "m/dt";
cout << "\nKecepatan badu Naik menjadi = "
<< TV1 << "m/dt";
cout << "\nKecepatan Awal ali = " << 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)
{
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 :" <
int Waktu, Jam, JlhJam, Selisih, Menit, JlhMenit, Detik,Tiba;
Jam = ketemu / 3600;
JlhJam = Jam * 3600;
Selisih = ketemu - JlhJam;
Menit = Selisih / 60;
JlhMenit = Menit * 60;
Detik = Selisih - JlhMenit;
Tiba =
Jam + 8;
cout << "\nali bertemu,berpapasan jalan pada pukul = "
<< Tiba << ":" << Menit << ":"
<
intvc;
vc=ketemu*V2;
cout<<
"\nJarakAntaraTitik A dengan C ="<
}
Hasil
Programnya :
Soal-2.
Sebuah kebun besar ditanami pohon
bibit sebanyak n baris. Setiap baris terdiridari n pohon, sehingga kebun besar
ini dapat kita sebut ukurannya = n x n. Pohon-pohon tersebut kemudian dicabut
dan ditanam ulang menjadi 13 buah kebundengan ukuran lebih kecil yaitu setiap
kebun kecil terdiri dari m baris dan setiapbaris terdiri dari m pohon,sehingga
kebun kecil ini kita sebut berukuran m x m.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.
Jawab
:
Program
dalam Bahasa C++ :
#include
#include
#include
#include
#pragma argsused
int main(int argc, char* argv[])
{
int a, b, n[400], m, index, status;
status = 0;
for(a=0; a<400 a="" o:p="">400>
n[a] = a*a;
for(b=1; b<400 b="" o:p="">400>
{
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="" o:p="">400>
{
for(b=1; b<400 b="" o:p="">400>
{
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
ke %d tidak ditemukan kombinasi yang cocok.",b);
}
getch();
return 0;
}
}
Hasil
Programnya :
Soal-3.
Susun program
(penggalan program) untuk menginputkan dua buah bilangan long integer yang
berbeda, lebih besar dari nol, misal disimpan dalam varibel A dan B.
Kemudian cari dan cetak
pembagi persekutuan terbesar kedua buah bilangan tersebut:
Contoh : Bila A=75
dan B = 105 maka tercetak : 15
Keterangan : 75 dan 105
habis dibagi oleh : 1,3,5,15.
Yang terbesar adalah 15, ini yang
dicetak.
105 habis dibagi 35, tapi75 tidak habis
dibagi 35,
Jadi 35 tidak termasuk dalam persekutuan
pembagi habis
75 habis dibagi 25, tapi 105 tidak habis
dibagi 25,
Jadi 25 tidak termasuk
dalam persekutuan pembagi habis
Jawab
:
Program
dalam bahasa C++ :
#include
#include
/* Standard C Function:
Greatest Common Divisor */
int
gcd ( int a, int b )
{
int c;
while ( a != 0 ) {
c = a; a =
b%a; b = c;
}
return b;
}
/* Recursive Standard C
Function: Greatest Common Divisor */
int
gcdr ( int a, int b )
{
if ( a==0 ) return b;
return gcdr ( b%a, a );
}
int
main(void)
{
int a,b;
{
cout
<< "masukkan bilangan a : "; //tampilkan ke layar
cin >> a; //memasukkan nilai inputan user ke
variabel a
cout << endl;
}
{
cout
<< "masukkan bilangan b : "; //tampilkan ke layar
cin >> b; //memasukkan nilai inputan user ke
variabel b
cout << endl;
}
printf("bilangan a=%d dan
b=%d\n\n", a,b);
printf("gcd(a,b)=gcd(%d,%d)=%d\n",
a, b, gcd(a,b));
return 0;
}