Diktat Bab 5

   
      1. Algoritma mencetak bilangan 1 sampai 4
{langsung mencetak bilangan 1 sampai 4}
Deklarasi b=integer
b<1
repeat
 b<=4
b++
write(b) 




2. buatlah translasi dalam bahasa C untuk algoritma 4.5. Apakah diperlukan modifikasi
algoritma ?


1.       Algoritam menentukan hari
{masukkan integer 1 sampai 7, akan ditentukan hari apa yang sesuai}
Deklarasi hari= integer;
Deskripsi
read(hari);

case(hari) of
1:hari<-'senin';
2:hari<-'selasa';
3:hari<-'rabu';
4:hari<-'kamis';
5:hari<-'jumat';
6:hari<-'sabtu';
else hari<-'minggu';

endcase
write(hari)




3. Buatlah algoritma dan program untuk mencetak bilangan yang habis dibagi 3 dan 5
antara 1 sampai dengan 100.





4. Hitunglah nilai dari :










5. Buatlah algoritma dan program untuk menghitung nilai dari permutasi dan kombinasi n
buah bola yang diambil r bola.
Petunjuk :
Rumus permutasi dan kombinasi adalah sebagai berikut :

#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
/* Algoritma 5
1. Deklarasi
    hasil,n,k : integer
    proses[2],yesno[2]; character
    
2. Deskripsi
    Read(n,k)
    if(n<k)
    then write("Nilai n tidak boleh lebih kecil dari k")
    else
    write"(Pilih P (permutasi) atau C (kombinasi))"
    if(proses[0]=='p' || proses[0]=='P') 
    hasil = faktorial(n)/faktorial(n-k);
    then write("\n \n")
    then write(n,"P",k," : ",hasil)
    
    else if (proses[0]=='c' || proses[0]=='C')
    hasil = faktorial(n)/(faktorial(k) * faktorial(n-k));
    then write("\n \n")
    then write(n,"C",k," : ",hasil)
    
    else
    then write("\n\tAnda tidak memilih P atau C")
    then write("\n\tIngin mengulang? <y/n> ") 
    Read(yesno[0])
    if (yesno[0]=='Y'||yesno[0]=='y')
    Y=1
    else if (yesno[0]=='N'||yesno[0]=='n'||yesno[0]!='Y'||yesno[0]!='y')
    Y=0 
    
    Kelompok 4=1500018161*/

int faktorial(int N);

int main(void)

{
int hasil; 
int n,k, Y=1;
char proses[2];
char yesno[2];

while(Y) {

cout<<"\tMasukkan nilai n : "; 
cin>>n;
cout<<"\tMasukkan nilai k : ";
cin>>k; 

if(n<k){
    cout<<"\tNilai n tidak boleh lebih kecil dari k\n";
}
else 
{
cout<<"\tPilih P (permutasi) atau C (kombinasi) : "; 
cin>>proses[0];
    if (proses[0]=='p' || proses[0]=='P') 
    {
    hasil = faktorial(n)/faktorial(n-k);
    cout<<"\n \n";
    cout<<n<<"P"<<k<<" : "<<hasil;
    }
    else if (proses[0]=='c' || proses[0]=='C')
    {
    hasil = faktorial(n)/(faktorial(k) * faktorial(n-k));
    cout<<"\n \n";
    cout<<n<<"C"<<k<<" : "<<hasil;
    }
    else
    cout<<"\n\tAnda tidak memilih P atau C"; 

    cout<<"\n\tIngin mengulang? <y/n> "; 
    cin>>yesno[0];
    if (yesno[0]=='Y'||yesno[0]=='y')
    Y=1;
    else if (yesno[0]=='N'||yesno[0]=='n'||yesno[0]!='Y'||yesno[0]!='y')
    Y=0;
    }
    }
}

int faktorial(int N)
{
int F;
if (N<=1)
{
return(1);
}
else
{
F = N * faktorial(N-1);
return(F);
}
}


Permutasi

Combinasi



6. Buatlah algoritma dan program untuk mengkonversi bilangan desimal menjadi bilangan
biner. Petunjuk : Gunakan operator mod dan div !
 #include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
/* Algoritma 6
1. Deklarasi
    desimal, pembagi, bit : long
    pembagi=1073741824

3. Deskripsi
    Read(desimal)
    while(pembagi>desimal)pembagi/=2

    do
    bit=desimal/pembagi
    then write(bit)
    desimal=desimal%pembagi
    pembagi/=2;

    while(pembagi>=1)
    write("\n")
   
    Kelompok 4=1500018161 */

int main(int argc, char** argv) {
   
    long desimal, pembagi, bit;
    pembagi=1073741824;
   
    cout<<"\t\t Program Konversi Bilangan Desimal ke Biner"<<endl<<endl;
    cout<<" Masukan bilangan  desimal : ";
    cin>>desimal;
   
    while(pembagi>desimal)pembagi/=2;
    do{
        bit=desimal/pembagi;
        cout<<bit;
        desimal=desimal%pembagi;
        pembagi/=2;
    }
    while(pembagi>=1);
    cout<<"\n";
    return 0;
}




7. Buatlah algoritma, flowchart dan program untuk menampilkan permutasi dari 3 huruf.
Misalnya diberikan : abc
output :
abc
bca
bac, dan seterusnya

#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void masuk(char a[50]);
void keluar(char b[50]);
void identitas();

int main()
 {
  char kata[50];
      cout<<"\nPermutasi dari tiga huruf"<<endl;
      masuk(kata);
      keluar(kata);;
  getch();
 }

void masuk(char a[50]){
   cout<<"\nMasukkan Kata           : ";
  gets(a);
  cout<<endl;

      }

void keluar(char b[50]){
cout<<"\nHasil Pembalikkan kata  :";
  for(int a=strlen(b);a>=0;a--)
   {
    cout<<b[a];
   }
      cout<<endl;
      }

LATIHAN Hal 120-121
1. Buatlah fungsi fibonacci dengan cara iteratif.
#include <iostream>


using namespace std;

int iteratif (int suku, int a, int b, int c)
{
a=0, b=1;
  
if (suku == 1) return b;
if (suku == 0) return a;

else{
for(int i=2; i<=suku; i++){ 

c = a + b; 
a = b;
b = c;
}
return c; 
}
}

int main() 
{
int suku, a, b,c;

cout<<"Masukkan nilai suku ke-: ";

cin>>suku;
cout<<"\nBilangan fibonaccinya untuk "<<suku<<" adalah ";
cout<< iteratif ( suku,  a,  b,  c);
return 0;
}

2. Buatlah fungsi fibonacci dengan 2 cara rekursif yang lain.


3. Algoritma perkalian dengan cara penjumlahan pada algoritma 5.3. belum sempurna
karena belum mencakup semua kemungkinan, misalnya untuk harga b negatif. Buatlah fungsi perkalian dengan cara penjumlahan dengan menyempurnakan algoritma 5.3. di
atas.


4. Buatlah algoritma rekursif dari algoritma 5.3.

5. Diberikan suatu bilangan bulat positif. Cetaklah bilangan bulat tersebut secara terbalik,
secara iteratif maupun rekursif.


#include"iostream"
using namespace std;

class perulangan{
public :
perulangan() {int i=0;}
void balik_while(int);
void balik_iteratif(int);
void balik_rekursif(int);
private :
int a,b,c,d;
};
void balik(char*s)
{
if(*s !='\0'){
balik(&s[1]);
cout<<s[0];
}
}
main(){ 
char*balik="balik bilagan";
int a,b;
    cout<<"masukan iteratif maupun rekursif "<<endl;
cin>>a>>b;
cout<<b<<a;
return 0;
}
  


6. Buatlah suatu subprogram yang mengembalikan nilai maksimum pertama (misal m1) dan
nilai maksimum kedua (misal m2, dan m1 tidak samadengan m2) dari array dengan n bilangan bulat.


7. Algoritma 5.5 menggunakan fungsi untuk menghitung n faktorial secara rekursif. Buatlah
algoritma menghitung n faktorial dengan menggunakan prosedur !
*ALGORITMA : 
Dimisalkan menginputkan angka 4 sebagai bilangan positif, maka perhitungan menjadi 4*3*2*1.
int n; merupakan inisialisasi variabel n dengan tipe data integer sebagai proses perhitungan.
int faktorial(int k); merupakan inisialisasi variabel dengan nama faktorial yang dimana digunakan 
untuk melakukan perhitungan variabel yang akan dijadikan variabel dalam melakukan perhitungan secara rekursif.
printf("Masukkan sembarang bilangan positif"); adalah perintah awal untuk menginputkan bilangan positif yang akan diproses.
printf(\nMelalui perhitungan rekursif, %d!= %d\n",n,faktorial(m)); adalah perintah untuk mengeksekusi 
fungsi angka faktorialdimana angka akan terus berulang selama nilai variabel k belum bernilai 0, namun 
jika sudah benar (0) maka akan mengembalikan nilai k*faktorial(k-1);

8. [Pengamatan : membayar barang belanja di kasir] Amatilah kejadian di mana seorang
pembeli (yang membeli barang cukup banyak) pada sebuah took swalayan. Perhatikan
apa yang dilakukan pembeli dan apa yang dilakukan oleh kasir ketika mengambil barang
belanjaan untuk menghitung berapa harga keseluruhan yang harus dibayar pembeli.
Laporkan konsep counter dan konsep total yang anda temukan pada kejadian tersebut.
Langkah yang dilakukan saat belanja :
a. mulai : kondisi awal sebelum belanja
b. proses :kegiatan apa saja yang dilakukan saat belanja
c. akhir : berapa uang yang diserahkan ke kasir, berapa jumlah barang yang dibeli beserta
jumlah uang yang harus dibayar dan uang kembalian (jika ada).

*ALGORITMA :
Menggunakan tipe data integer, menginputkan kode barang, nama barang, harga barang,
jumlah barang, kemudian akan muncul total harga belanjanya, jika harga belanjanya
kurang dari sama dengan 5000 maka diskonnya 0, jika lebih dari sama dengan 100000
maka mendapatkan diskon,total yang harus dibayarkan adalah total belanja dikurangi diskon, jika 
total yang harus dibayarkan 230000 dan uang yang dibayar kekasir 250000 maka kembaliannya adalah 20000.
*C++
#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
    char nm_brg [50],lnjt='Y';
    int diskon,Total_Belanja,bayar,kd_brg,jml_brg,hrg_brg,jml_uang,kembali;
    do{
        system("cls");
        cout<<"Program kasir sederhana"<<endl;
        cout<<"======================="<<endl;
        cout<<"Masukkan kode barang : ";cin>>kd_brg;
        cout<<"Masukkan nama barang : ";cin>>nm_brg;
        cout<<"Masukkan harga barang : ";cin>>hrg_brg;
        cout<<"Masukkan jumlah barang : ";cin>>jml_brg;
        cout<<"========================="<<endl;
        Total_Belanja=hrg_brg*jml_brg;
        cout<<"Total : Rp."<<Total_Belanja<<endl;
        cout<<"========================="<<endl;
        if(Total_Belanja<=5000){
        diskon=Total_Belanja*0;
        }
        else if(Total_Belanja>=100000){
            diskon=Total_Belanja*10/100;
        }
        cout<<"Diskon : Rp."<<diskon<<endl;
        bayar=Total_Belanja-diskon;
        cout<<"Total bayar : Rp."<<bayar<<endl;
        cout<<"========================"<<endl;
        cout<<"Masukkan jumlah uang : Rp.";cin>>jml_uang;
        cout<<"========================(-)"<<endl;
        kembali=jml_uang-bayar;
        cout<<"Kembali : Rp."<<kembali<<endl<<endl;
        cout<<"Brang yang sudah dibeli tidak dapat ditukar atau dikembalikan"<<endl;
        cout<<"Terimakasih atas kunjungan anda"<<endl<<endl;
        cout<<"Ulangi lagi [Y/T] : ";cin>>lnjt;
        cout<<endl<<endl;
    }while(lnjt=='Y');
    system("pause");


 9. [Proyek] Buatlah suatu class yang akan mengeksplorasi kalimat. Kalimat dapat disimpan
dalam bentuk array (kumpulan) karakter.
a. masukan user diterima huruf demi huruf sampai diakhiri tanda akhir baris
(sentinel)
b. buat method untuk menghitung statistik :
i. huruf hidup (vokal)
ii. huruf mati (konsonan)
iii. banyak kata
iv. huruf terbanyak dalam kalimat.
c. buat method untuk mengubah huruf awal setiap kata menjadi huruf besar
class Kalimat {
friend
friend
public :
private :
};
Operator overloading input :
Bab 5 Perulangan halaman : 123
Operator overloading output :
Method statistik :
(BELOM BISA NGERJAIN)

MAAF KALAU ADA KESALAHAN :-)
Share on Google Plus

About Luthfi

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 komentar:

Posting Komentar