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