TUGAS DESAIN DAN ANALISIS ALGORITMA Nama : Aditya Wardana

advertisement
TUGAS DESAIN DAN ANALISIS ALGORITMA
Nama : Aditya Wardana
Fariz Agustia P.
Reffi Prima
Kelas : TF – D
(0734010035)
(0734010108)
(0734010070)
Soal :
1. Untuk tiap algoritma berikut, tentukan: (i) ukuran inputnya; (ii) operasi dasarnya;
(iii) apakah operasi dasarnya dapat berbeda untuk input yang berukuran sama:
a. Penghitungan jumlah dari n bilangan
b. Penghitungan n!
c. Pencarian elemen terbesar pada sekumpulan n bilangan
2. Ada 22 sarung tangan di sebuah laci: 5 pasang berwarna merah, 4 pasang berwarna
kuning, dan 2 pasang berwarna hijau. Kita akan mengambil sarung tangan dalam
gelap dan mengeceknya setelah pengambilan dilakukan. Berapa jumlah terkecil
sarung tangan yang harus diambil untuk menjamin bahwa kita telah mengambil
sepasang dengan warna yang sama? Dalam best case dan worst case?
Jawab :
1.a.i : karena berhubungan dengan sifat2 bilangan maka ukuran inputnya adalah jumlah bit (b)
dari nilai biner bilangan tersebut: b = [ log2 n ] + 1
1.a.ii : coding : #include <iostream.h>
void main()
{
int nilai,loop,temp;
cout<<"masukkan nilai n = "; cin>>nilai; temp=0;
for (loop=0;loop<=nilai;loop++)
temp = temp + loop;
OPERASI DASAR
cout<<"jumlah dari penghitungan penjumlahan dari bilangan "<<nilai<<"
dimulai dari 0"<<endl<<"adalah = "<<temp<<endl;
}
Nilai temp yang diset 0 dari awal ditambah nilai berikutnya dari tambah +1 dari looping
yang akan berhenti sampai penambahan +1 sama dengan nilai inputan.
1.a.iii : Dapat berbeda selama jenis inputan sama yaitu nilai bulat.
1.b.i : karena berhubungan dengan sifat2 bilangan maka ukuran inputnya adalah jumlah bit (b)
dari nilai biner bilangan tersebut: b = [ log2 n ] + 1
1.b.ii : coding : #include <iostream.h>
void main()
{
int nilai,loop,temp;
cout<<"masukkan nilai n = "; cin>>nilai; temp=0;
for (loop=0;loop<=nilai;loop++)
temp = temp * loop;
OPERASI DASAR
cout<<"jumlah dari penghitungan penjumlahan dari bilangan "<<nilai<<"
dimulai dari 0"<<endl<<"adalah = "<<temp<<endl;
}
Nilai temp yang diset 0 dari awal dikalikan nilai berikutnya dari tambah +1 dari looping
yang akan berhenti sampai penambahan +1 sama dengan nilai inputan.
1.b.iii : Dapat berbeda selama jenis inputan sama yaitu nilai bulat.
1.c.i : karena berhubungan dengan sifat2 bilangan maka ukuran inputnya adalah jumlah bit (b)
dari nilai biner bilangan tersebut: b = [ log2 n ] + 1
1.b.ii : coding : #include <stdio.h>
#include <windows.h>
void main()
{
int nilai,loop,n,masukan[1000], terbesar; char setuju;
n=0;
do
{
system("cls");
printf("masukkan nilai ke - %i = ",n+1); scanf("%i",&nilai);
masukan[n]=nilai;
n++;
printf("ingin masukkan nilai lagi (y/n) ? "); scanf("%s", &setuju);
} while (setuju=='y' || setuju=='Y');
printf("Data masukan : ");
for (loop=0;loop<n;loop++)
printf(" %i,",masukan[loop]);
printf("\n");
if (n==0)
terbesar=masukan[n];
else
{
for (loop=0;loop<n;loop++)
OPERASI
{
DASAR
if(masukan[loop+1]>masukan[loop])
terbesar=masukan[loop+1];
else
terbesar=masukan[loop];
}
}
printf("Nilai terbesar dari deretan diatas adalah : %i \n", terbesar);
}
Nilai pertama akan dibandingkan dengan nilai inputan berikutnya apabila nilai lebih besar
maka dijadikan nilai terbesar sementara sampai perulangan sesuai banyaknya inputan
selesai dan semua angka dibandingkan.
1.b.iii : Dapat berbeda selama jenis inputan sama yaitu nilai bulat.
2. Best Case : Kemungkinan terbaik adalah apabila pasangan yang satunya langsung terambil
kedua setelah pengambilan pertama dilakukan jadi pengambilan hanya 2 kali.
Worst Case : Kemungkinan terburuk adalah apabila pasangan yang satunya terambil terakhir
dalam berpasangan yaitu terambil ke 11 (22 buah karena berpasangan jadi 22
buah / 2 buah = 11 buah).
Download