Selasa, 15 Mei 2018

WORKSHOP BAB 9

NO.1 :
C++  :
#include <iostream>
#define maks 10
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
int A[maks][maks], baris, kolom;
cout<<"input baris :"; cin>>baris;
cout<<"input kolom :"; cin>>kolom;
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
cout<<"Masukan data ke ["<<i<<"] ["<<j<<"] : "; cin>>A[i][j]; 
}
}
cout<<"Isi Matriks A :\n";
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
cout<<A[i][j]<<" ";
}
cout<<endl;
}
int m[baris],n;
cout<<"penghitungan vektor \n";
cout<<"berapa variabel : ";
 cin>>m[kolom];
 for(int z=0; z<kolom; z++){
 cout<<"Masukan data ke ["<<z<<"] "" : "; cin>>m[z]; 
}
cout<<endl;

cout<<" vektor b : \n";
 for(int z=0; z<kolom; z++){
cout<<m[z]<<"\n";
}
cout<<"perkalian matrik dan vektor \n";
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
for(int z=0; z<kolom; z++){
n=A[i][j]*m[z];
cout<<n<<" ";
}
}
}
 return 0;
}



NO.2
C++ :
#include"iostream"
using namespace std;
main(){ int i,j,n;
 cout<<"masukkan ordo matriks : "; cin>>n;
 for(i=1;i<=n;i++){
  for(j=1;j<=n;j++){
   if(i==j) cout<<"1 ";
   else cout<<"0 ";
  }
  cout<<endl;
 }
}


NO.3
C++ :
#include"iostream"
using namespace std;
main(){ int i,j,m,n,o;
 cout<<"Program transpose matriks C(m,n)\nMasukkan nilai m : ";
 cin>>m; cout<<"masukkan nilai n : "; cin>>n;
 int mat[m][n];
 for(i=0;i<m;i++){
  for(j=0;j<n;j++){
   cout<<"nilai C("<<i+1<<","<<j+1<<")=";
   cin>>mat[i][j];
  }
  cout<<endl;
 }
 system("cls");
 cout<<"matriks diatas diilustrasikan seperti gambaran dibawah ini\n\n";
 for(i=0;i<m;i++){
  for(j=0;j<n;j++){
   cout<<mat[i][j]<<" ";
  }
  cout<<endl;
 }
 o=m; m=n; n=o;
 cout<<"\nTranspose matriksnya adalah seperti gambar dibawah ini\n\n";
 for(j=0;j<m;j++){
  for(i=0;i<n;i++){
   cout<<mat[i][j]<<" ";
  }
  cout<<endl;
 }
}


NO.4
C++ :
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void Masukan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        for(j = 0; j < klm; j++) {
            cout << " Elemen [" << (i + 1) << "][" << (j + 1) << "]? ";
            scanf("%d", (q + i * klm + j));
        }
    }
}

void Tampilkan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        cout << endl;
        for(j = 0; j < klm; j++) {
            cout <<" ";
            cout << *(q + i * klm + j) << "\t";
        }
    }
    cout << endl;
}

void Kali(int *p, int *q, int *z, int bA, int kA, int bB, int kB) {
    int i, j, k;
    for(i = 0; i < bA; i++) {
        for(j = 0; j < kB; j++) {
            *(z + i * bB + j) = 0;
            for(k = 0; k < kA; k++) {
                *(z + i * bB + j) += *(p + i * kA + k) * (*(q + k * kB + j));
            }
        }
    }
}

int main() {
cout<<"\t\t\tPROGRAM    : PERKALIAN MATRIKS DENGAN SKALAR\n";
awal:
    int *a, *b, *c, brsA, klmA, brsB, klmB;
    cout<<"\n SYARAT...!!!\n";
    cout<<" Jumlah Kolom A HARUS SAMA dengan Baris B\n\n";
    cout << " Jumlah Baris Matriks A? ";
    cin >> brsA;
    cout << " Jumlah Kolom Matriks A? ";
    cin >> klmA;
    cout << " Jumlah Baris Matriks B? ";
    cin >> brsB;
    cout << " Jumlah Kolom Matriks B? ";
    cin >> klmB;
    if(klmA != brsB) {
        cout << " Perkalian TIDAK Dapat Dilakukan." << endl;
        cout << " Jumlah Kolom A TIDAK Sama Dengan Jumlah Baris B." << endl;
    } else {
        a = (int *) malloc(brsA * klmA * 4);
        b = (int *) malloc(brsB * klmB * 4);
        c = (int *) malloc(brsA * klmB * 4);

        cout << "\n Kordinat Inputan [y][x]" ;
        cout << "\n Contoh: ordo 2x2" ;
        cout << "\n [1][1]\t[1][2]\t" ;
        cout << "\n [2][1]\t[2][2]\t" ;
        cout << "\n\n Input Matriks A:\n" ;
        cout << " ----------------\n";
        Masukan(a, brsA, klmA);
        cout << "\n Input Matriks B:\n" ;
        cout << " ----------------\n";
        Masukan(b, brsB, klmB);

        cout << "\n Matriks A:" << endl;
        Tampilkan(a, brsA, klmA);
        cout << "\n Matriks B:" << endl;
        Tampilkan(b, brsB, klmB);
        Kali(a, b, c, brsA, klmA, brsB, klmB);
        cout << "\n Matriks A x B:" << endl;
        Tampilkan(c, brsA, klmB);
    }
cout<<"\n\n Apakah Anda Ingin Mengulang [Y/N] ? "  ;
char m ;
cin>>m;
if (m == 'y' || m== 'Y')
goto awal;
else if (m == 'n' || m== 'N')
{
goto akhir;
}
akhir:
cout<<"\n\n\t\t\t    \"TERMA KASIH\"";
    return 0;
}



NO.5
C++ :
#include"iostream"
using namespace std;
main(){ int i,j; float det,temp;
 float mat[2][2], c[2][2], ci[2][2], ch[2][2];
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
   cout<<"nilai C("<<i+1<<","<<j+1<<")=";
   cin>>mat[i][j];
   c[i][j]=mat[i][j];
  }
  cout<<endl;
 }
 cout<<"matriks diatas diilustrasikan seperti gambaran dibawah ini\n\n";
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
   cout<<mat[i][j]<<" ";
  }
  cout<<endl;
 }
 mat[0][1]=-mat[0][1]; mat[1][0]=-mat[1][0];
 temp=mat[0][0]; mat[0][0]=mat[1][1]; mat[1][1]=temp;
 cout<<"\nadjoin dari matriks diatas adalah\n";
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
   cout<<mat[i][j]<<" ";
  }
  cout<<endl;
 }
 det=mat[0][0]*mat[1][1]-mat[1][0]*mat[0][1];
 det=1/(float)det;
 cout<<"\nSedangkan untuk inversnya adalah sebagai berikut\n";
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
   ci[i][j]=det*mat[i][j];
   cout<<ci[i][j]<<" ";
  }
  cout<<endl;
 }
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
    for(int k=0;k<2;k++){
   temp=c[i][k]*ci[k][j];
   ch[i][j]=ch[i][j]+temp;
    }
  }
 }
 cout<<"\nhasil perkalian matriks asal dengan\nmatriks yang telah di invers adalah\n";
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
   cout<<ch[i][j]<<" ";
  }
  cout<<endl;
 }

WORKSHOP BAB 7

1.Buatlah algoritma dan subprogram yang cara kerjanya seperti procedure insert di atas. Misalkan : kata1 = “Algoritma Pemrograman”
kata2 = “dan “
Outputnya :
kata3 = “Algoritma dan Pemrograman”


=> Algoritma  : "Program menyisipkan kata pada karakter"
     Deklarasi    :
                          a, b = string
                          c = integer
     Deskripsi   :
                          "Kalimat pertama"a;
                          "Kalimat kedua"b;
                          "Menyisipkan kata pada karakter ke"c;
                          a.insert(c, b+" ");
                          a;


#include <iostream>
#include <string.h>
#include <cstdlib>
/* 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)
{
string a,b;int c;
cout<<"kalimat pertama : ";
getline(cin, a);
cout<<"kalimat kedua : ";
cin>>b;
cout<<a<<endl;
cout<<"Menyisipkan kata pada karakter ke : ";cin>>c;
a.insert(c, b+" ");
cout<<a;
return 0;

}



2. Buatlah algoritma dan program untuk mengubah string menjadi bergantian huruf besar dan kecil. Contoh :
Algoritma dan Pemrograman =>AlGoRiTmA dAn PeMrOgRaMaN
=> Algoritma : "Program merubah huruf besar dan kecil"
      Deklarasi  :
                          i, jum = integer
                          string[100] = karakter
     Deskripsi  :
                         "Masukan sembarang kalimat:"string[100];
                         if
                             string[0]>='a' and string[0]<='z';
                                 string[0]=(char)string[0]-32;
                         end if;
                         for i=0 then i<(int)strlen(string) then i++;
                            if    i%2==0
                                if   string[jum]>='A')  and    string[jum]<='Z'
                                     string[jum]=(char)string[jum]+32;
                                     jum++;
                               end if;
                           end if;
                        end for;
                       for  i=1   then   string[i]!='\0'    then  i++;
                          if  string[i]==' '  then  d++;
                               if  i-1-d)%2==0;
                                   if   string[i+1]>='a'  and  string[i+1]<='z'
                                        string[i+1]=(char)(string[i+1]-32);
                                   end if;
                               end if;
                           end if;
                        end for;
                               

#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
int main()
{
int i,jum;

char string[100];

cout<<"Masukan sembarang kalimat:\n";
cin.getline(string,100); //membaca spasi

//mengubah huruf awal menjadi huruf kapital
if((string[0]>='a')&& (string[0]<='z'))
string[0]=(char)string[0]-32;


//mengubah huruf setelah huruf awal menjadi huruf kecil
jum=1;int d=0;
for(i=0;i<(int)strlen(string);i++)
{
if(i%2==0){
if((string[jum]>='A')&& (string[jum]<='Z'))
string[jum]=(char)string[jum]+32;
jum++;}
}

//mengubah huruf setelah spasi menjadi huruf kapital
for(i=1;string[i]!='\0';i++)
{
if(string[i]==' ') d++;
if((i-1-d)%2==0)
{
if(string[i+1]>='a' && string[i+1]<='z')
string[i+1]=(char)(string[i+1]-32);
}
}


cout<<"Hasil Akhir : "<<string<<endl;
getch();
}


3. Buatlah algoritma dan program untuk menghitung jumlah kata dalam suatu kalimat.

=> Algoritma  : "Program menghitung jumlah kata dalam suatu kalimat"
     Deklarasi   :
                           kalimat[100] = karakter
                           i, spaci    =     integer
     Deskripsi   :
                           "  Masukan Sebuah Kalimat "kalimat,sizeof(kalimat);
                           for   i=0  then  kalimat[i]  then   i++;
                                if    isspace (kalimat[i])  and   ispunct (kalimat[i]);
                                    spasi++;
                                end if;
                           " Jumlah Kata"
                                 spasi +1
                           " Kata yang anda masukan adalah";
                           for   i=0 then  kalimat[i] then  i++
                                if(isspace (kalimat[i]) || ispunct (kalimat[i]))
                                          spasi++;
                                end if;
                             kalimat[i];
                           end for;


#include<stdio.h>
#include<iostream>
#include<ctype.h>
using namespace std;
int main()
{
      char kalimat[100];
      int i, spasi=0;

      cout << "\n\t\t - Program Menghitung Kata Dalam Sebuah Kalimat -\n";
      cout << "\t==================================================================\n\n";
      cout << "\t Masukan Sebuah Kalimat : ";
      cin.getline(kalimat, sizeof(kalimat));

      for(i=0; kalimat[i]; i++)
      {
            if(isspace (kalimat[i]) || ispunct (kalimat[i]))
            {
                  spasi++;
            }
      }
      cout << "\t Jumlah Kata = " << spasi +1 << "\n\n";
      cout << "\t Kata yang anda masukan adalah : \n";
      cout << "\t ";

      for(i=0; kalimat[i]; i++)
      {
            if(isspace (kalimat[i]) || ispunct (kalimat[i]))
            {
                  spasi++;
                  cout << "\n";
                  cout << "\t";
            }
            cout << kalimat[i];
      }

      cout << "\n";
     
      cout << "\t==================================================================\n\n";
      cout << "\n";
      getchar();
}

WORKSHOP BAB 6

1. Menghitung ganjil dan genap
    dengan c++

 

    #include

/* 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) {

int g;

cout<<“———————————–“<<endl;

cout<<“Menentukan Nilai Ganjil dan Genap”<<endl;

cout<<“———————————–“<<endl;

cout<<“Masukan nilai g : “;

cin>>g;

if (g % 2==0)

cout<<“Bilangan Genap”<<endl;

else

cout<<“Bilangan Ganjil”<<endl;

cout<<“————————————“<<endl;

return 0;

}

Analisis
Untuk membuat program C++ yang menentukan bilangan ganjil atau bilangan genap, terlebih dahulu kita harus tahu bagaimana membedakan bilangan ganjil dan genap. Contoh bilangan ganjil adalah 1, 3, 5, 7, 9 dan seterusnya. Contoh bilangan genap adalah 2, 4, 6, 8 dan seterusnya. Sebelum bisa menentukan bilangan ganjil dan genap, anda harus mengetahui operator sisa pembagian (MOD) / modulus.
Analisis kasusnya:
Kasus 1. Jika x mod 2 = 0, maka tulis genap
Kasus 2. Jika x mod 2 = 1, maka tulis ganjil

algoritman

prosedur GanjilGenap(input/output n : integer)

       {Program Menampilkn Bilangan Ganjil atau Genap}

   Deskripsi :

  N: integer } Pendeklarasian variabel yang akan digunakan

  Algoritma :

Read (n) => untuk input

If (n mod 2 = 0) then

Write (“bilangan genap”)

Else

Write (“bilangan ganjil”)

End else

End if

2. Menghitung luas persegi panjang
     dengan c++

#include

/* run this program using the console pauser or add your own getch, system(“pause”) or input loop */
using namespace std;
class persegi {
public :
persegi ();
void input();
void proses();

private :
int p;
int l;
int hasil;
};
persegi::persegi(){
cout<<“=================================\n”;
cout<<“Menghitung Luas Persegi Panjang\n”;
cout<<“=================================\n”;
}

void persegi::input (){
cout<<“Masukkan Panjang : “;
cin>>p;
cout<<“Masukkan Lebar : “;
cin>>l;

}

void persegi::proses(){
hasil = p*l;
cout<<“Luas : “<<hasil;
}

int main(int argc, char** argv) {

persegi Prsg;
Prsg.input();
Prsg.proses();
return 0;

}

Analisis
Untuk menghitung luas persegi panjang pada C++ kita harus mengetahui dahulu rumus luas persegi panjang, setelah kita tau rumus nya, barulah kita akan membuat program C++ Menghitung Luas Persegi Panjang. Di situ saya misalkan inputan panjang 4 dan lebar 3 untuk menghitung luas persegi panjang dengan rumus yaitu (PxL) panjang kali lebar.
L=PxL
L=4×3
L=12 cm2

algoritman :

prosedur Luas(input p : integer, l : integer, output hasil : hasil)
{mencari luas persegi panjang dan di cetak di piranti keluaran}

Deklarasi :

P : integer

L : integer

Hasil : integer

Deskripsi :

Read (p) → untuk input

Read (l) → untuk input

Hasil ← p*l


3. Menghitung keliling persegi panjang
    dengan c++

#include

/* run this program using the console pauser or add your own getch, system(“pause”) or input loop */
using namespace std;
class persegi {
public :
persegi ();
void input();
void proses();

private :
int p;
int l;
int hasil;
};
persegi::persegi(){
cout<<“=================================\n”;
cout<<“Menghitung Keliling Persegi Panjang\n”;
cout<<“=================================\n”;
}

void persegi::input (){
cout<<“Masukkan Panjang : “;
cin>>p;
cout<<“Masukkan Lebar : “;
cin>>l;

}

void persegi::proses(){
hasil = 2*(p+l);
cout<<“Keiling : “<<hasil;
}

int main(int argc, char** argv) {
persegi Prsg;
Prsg.input();
Prsg.proses();
return 0;

}

Analisis
Untuk menghitung Keliling persegi panjang pada C++ kita harus mengetahui rumus keliling persegi panjang, barulah kita akan membuat program C++ Menghitung Keliling Persegi Panjang. Di situ saya misalkan inputan panjang 3 dan lebar 2 untuk menghitung keliling persegi panjang dengan rumus yaitu 2x(P+L).
K=2x(P+L)
K=2x(3+2)
K=2×5
K=10 cm

Algoritma
prosedur Keliling(input p : integer, l : integer, output hasil : hasil)
{mencari keliling persegi panjang dan di cetak di piranti keluaran}

Deklarasi :

P : integer

L : integer

Hasil : integer

Deskripsi :

Read (p) → untuk input

Read (l) → untuk input

Hasil ← 2*(p+l)

Tampilkan output

4. Menghitung volum lingkaran
    dengan c++

#include

/* run this program using the console pauser or add your own getch, system(“pause”) or input loop */
using namespace std;
class lingkaran {
public :
lingkaran ();
void input();
void proses();

private :
int r;
float volume;
};

lingkaran::lingkaran(){
cout<<“=================================\n”;
cout<<“Menghitung Volume Lingkaran \n”;
cout<<“=================================\n”;
}

void lingkaran::input (){
cout<<“Masukkan Jari-Jari : “;
cin>>r;
}

void lingkaran::proses(){
volume=(4/(float)3)*(22/(float)7)*r*r*r;
cout<<“Volume : “<<volume;
}

int main(int argc, char** argv) {
lingkaran Lkrn;
Lkrn.input();
Lkrn.proses();

return 0;

}

 Analisis
Pada dasarnya sebuah lingakran memiliki sebuah jari-jari, untuk menghitung sebuah Luas lingkaran makan kita akan gunakan ketetapan phi yang sudah ditetapkan dari sebuah perjanjian yaitu dengan phi 22/7 atau 3,14. untuk membuat program mencari luas saya menetapkan phi 3,14 dan inputan manual untuk jari-jarinya. berikut ini rumus mencari luas lingkran:
L=phi*r*r
Contoh:
L=3,14*7*7
L=153,86 cm2

Algoritma
prosedur Lingkaran(input r : integer)
{mencari Luas lingkaran dengan inputan jar-jarinya dan di cetak di piranti keluaran}

Deklarasi :

R : integer

Volume : float

Diskripsi :

Read (r) → untuk input

volume← (4/(float)3)*(22/(float)7)*r*r*r

5. Menhitung keliling lingkaran
    dengan c++

#include

/* run this program using the console pauser or add your own getch, system(“pause”) or input loop */
using namespace std;
class lingkaran {
public :
lingkaran ();
void input();
void proses();

private :
int r;
float keliling;
};

lingkaran::lingkaran(){
cout<<“=================================\n”;
cout<<“Menghitung Keliling Lingkaran\n”;
cout<<“=================================\n”;
}

void lingkaran::input (){
cout<<“Masukkan Jari-Jari : “;
cin>>r;
}

void lingkaran::proses(){
keliling=2*(22/(float)7)*r;
cout<<“Keliling : “<<keliling;
}
int main(int argc, char** argv) {
lingkaran Lkrn;
Lkrn.input();
Lkrn.proses();
return 0;

}
Analisis
Pada dasarnya sebuah lingakran memiliki sebuah jari-jari, untuk menghitung sebuah kelilingf lingkaran makan kita akan gunakan ketetapan phi yang sudah ditetapkan yaitu dengan phi 22/7 atau 3,14. untuk membuat program mencari luas saya menetapkan phi 3,14 dan inputan manual untuk jari-jarinya. berikut ini rumus mencari luas lingkran:
k=2*phi*r
Contoh:
k=2*3.14*7
k=43,96 cm

Algoritma
prosedur keliling(input r : integer)
{mencari keliling lingkaran dengan inputan jar-jarinya dan di cetak di piranti keluaran}

Deklarasi :

R : integer

Volume : float

Diskripsi :

Read (r) → untuk input

Keliling ← 2*(22/(float)7)*r

6. Menghitung luas segitiga
    dengan c++

#include 
using namespace std;
class segitiga {
public :
segitiga ();
void input();
void proses();

private :
int a;
int t;
int hasil;
};
segitiga::segitiga(){
cout<<“=================================\n”;
cout<<“\n\nLuas Segitiga Siku-siku : \n”<<endl;
cout<<“=================================\n”;
}

void segitiga::input (){
cout<<“Masukkan Alas : “;
cin>>a;
cout<<“Masukkan Tinggi : “;
cin>>t;

}

void segitiga::proses(){
hasil = (a*t)/2;
cout<<“Luas : “<<hasil;
}

main ()
{

segitiga Sgtg;
Sgtg.input();
Sgtg.proses();
return 0;

}
  Analisis
untuk menghitung luas segitiga kita harus memberikan inputan alas dan tinggi, karena pada dasarnya segitiga hanya memiliki alas dan tinggi, berikut ini adalah rumus untuk mencari luas segitiga:
Luas=1/2*a*t
contoh soal
misalkan alas=5 dan tinggi 7
luas=1/2*5*7
luas=17,5 cm

Algoritma
prosedur Segitiga(input a : integer, input t : integer )
{mencari luas segitiga dengan menginputkan alas dan tinggi ke piranti keluaran}

Deklarasi :

A : integer

T : integer

Hasil : integer

Diskripsi :

Read (a) → untuk input

Read (t) → untuk input

Hasil ← a*t/2

7. Menghitung keliling segitiga
    dengan c++

#include 
#include

using namespace std;
class segitiga {
public :
segitiga ();
void input();
void proses();

private :
int a;
int b;
int c;
int keliling;
};
segitiga::segitiga(){
cout<<“=================================\n”;
cout<<“Menghitung Keliling Segitiga\n”;
cout<<“=================================\n”;
}

void segitiga::input (){
cout<<“Masukkan Panjang Sisi A = “;
cin>>a;
cout<<“Masukkan Panjang Sisi B = “;
cin>>b;
cout<<“Masukkan Panjang Sisi C = “;
cin>>c;

}

void segitiga::proses(){
keliling=a+b+c;;
cout<<“Keliling : “<<keliling;
}

int main(int argc, char *argv[]){
segitiga sgtga;
sgtga.input();
sgtga.proses();
return 0;

}
Analisis
untuk mencari keliling segitiga kita akan memberikan sebuah inputan sisi, dimana segitiga memiliki tiga sisi, dan untuk mencari keliling segitiga yaitu dengan cara S+S+S. berikut contoh pengerjaan mencari keliling segitiga
Keliling=S+S+S
Keliling=3+5+3
Keliling=11 cm

Algoritma
prosedur Segitiga(input sia : integer, sib : integer, sic : integer )
{mencari keliling segitiga dengan menginputkan sisi sebanyak tiga kali ke piranti keluaran}

Deklarasi :

A : integer

B : integer

C: integer

Keliling: integer

Diskripsi :

Read (a) → untuk input

Read (b) → untuk input

Read (c) → untuk input

Keliling ← a+b+c

8. Menghitung tinggi segitiga
    dengan c++

#include 
using namespace std;
class segitiga {
public :
segitiga ();
void input();
void proses();

private :
int l;
int a;
int tinggi;
};
segitiga::segitiga(){
cout<<“=================================\n”;
cout<<“Menghitung Tinggi Segitiga\n”;
cout<<“=================================\n”;
}

void segitiga::input (){
cout<<“masukkan luas segitiga : “;
cin>>l;
cout<<“masukkan nilai alas segitiga : “;
cin>>a;

}

void segitiga::proses(){
tinggi = 2*l/a;
cout<<“Tinggi : “<<tinggi;
}

int main(int argc, char** argv) {

segitiga sgtga;
sgtga.input();
sgtga.proses();
return 0;
}
 
  algoritman
{Mencari Tinggi Segitiga}

Deklarasi :

L : integer

A : integer

Tinggi : integer

Diskripsi :

Read (l) → untuk input

Read (a) → untuk input

Hasil ← 2*l/a

9. Menghitung kombinasi
    dengan c++

#include 
#include 
using namespace std;

int main(){
    int i,r, n, C, x;
    int fak_n=1;
    int fak_x=1;
    int fak_r=1;
    cout<<“Masukan nilai r: “;cin>>r;
    cout<<“Masukan nilai n: “;cin>>n;
    x=n-r;
    for (i=1; i<=x; i++){
        fak_x = fak_x * i;}
    for (i=1; i<=n; i++){
        fak_n = fak_n * i;}
    for (i=1; i<=r; i++){
        fak_r = fak_r * i;}
  
    cout<<“\nFaktor dari “<<n<<” adalah\t  : “<<fak_n;
    cout<<“\nFaktor dari “<<r<<” adalah\t  : “<<fak_r;
    cout<<“\nFaktor dari n-r (“<<x<<“) adalah: “<<fak_x;
  
    C= fak_n /(fak_x *fak_r);
    cout<<“\n\nMari kita hitung : “<<fak_n<<” / (“<<fak_r<<” X “<<fak_x<<“)”;
    cout<<“\n\nMaka Kombinasinya: “<<C;
    getch();
    return 0;

    }


10. Menghitung permutasi
    dengan c++
    
cara 1.
#include 
#include 
using namespace std;

int main(){
    int i,r, n, P, x;
    int fak_n=1;
    int fak_x=1;
  
    cout<<“Masukkan nilai r: “;cin>>r;
    cout<<“Masukkan nilai n: “;cin>>n;
    x=n-r;
    for (i=1; i<=x; i++){
        fak_x = fak_x * i;}
    for (i=1; i<=n; i++){
        fak_n = fak_n * i;}
  
    cout<<“\nFaktor dari “<<n<<” adalah: “<<fak_n;
    cout<<“\nFaktor dari n-r (“<<x<<“) adalah: “<<fak_x;
  
    P= fak_n /(fak_x);
    cout<<“\n\nMaka Permutasinya: “<<P;     getch();
    return 0;

    }

cara ke 2

#include

#include

using namespace std;

class kombinatorial{

      public:

             void permutasi();

             void combinasi();

      private:

             int i,n,r,p,t,a,b,c;

};

void kombinatorial::permutasi(){

    cout<<“PERMUTASI”<<endl;

    cout<<“\nMasukan n:”;cin>>n;

    cout<<“\nMasukan r:”;cin>>r;

    a=1;

    b=1;

    for(i=n;i>0;i–)

    {

        a *=i;

    }

    t=n-r;

    if(t!=0)

    {

        for(i=t;i>0;i–)

        {

            b *=i;

        }

    }

    if(t!=0)

    {

         p=a/b;

         cout<<“\nHasil:”<<p<<endl;

    }

    else

    {

         cout<<a<<endl;

    }

cout<<“====================================”<<endl;

}

void kombinatorial::combinasi(){

    cout<<“\nCOMBINASI”<<endl;

    cout<<“\nMasukan n:”;cin>>n;

    cout<<“\nMasukan r:”;cin>>r;

    a=1;

    b=1;

    c=1;

    for(i=n;i>0;i–)

    {

        a *=i;

    }

    t=n-r;

    if(t!=0)

    {

        for(i=t;i>0;i–)

        {

            b *=i;

        }

    }

    for(i=r;i>0;i–)

    {

        c *=i;

    }

    if(t!=0)

    {

         p=a/(b*c);

         cout<<“\nHasil:”<<p<<endl;

    }

    else

    {

         cout<<a<<endl;

    }

}

int main(int argc, char *argv[])

{

    kombinatorial x;

    x.permutasi();

    cout<<endl;

    x.combinasi();

    cout<<endl;

    system(“PAUSE”);

    return EXIT_SUCCESS;

}

ALGORITMA BUBBLE SORT

Algoritma Bubble Sort

Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z).Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.
Contoh Kasus Bubble Sort
Misalkan kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini (ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang terjadi:
Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)
Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)
Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)
Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) -> proses selesai

Analisis Algoritma Bubble Sort

Tujuan dari analisis  algoritma adalah untuk  mengetahui efisiensi dari algoritma. Dalam hal ini dilakukan pembandingan antara dua atau lebih algoritma pengurutan.Tahap analisis adalah melakukan pengecekan program untuk memastikan bahwa program telah benar secara logika maupun sintak (tahap tracing atau debugging). Tahap selanjutnya yaitu menjalankan program untuk mengetahui running time atau waktu komputasi dalam hal ini
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil.
Salah satu cara untuk menganalisa kecepatan algoritma sorting saat running time adalah dengan menggunakan notasi Big O. Algoritma  sorting mempunyai kompleksitas waktu terbaik, terburuk, dan rata-rata.  Dengan notasi Big O, kita dapat mengoptimalkan penggunaan algoritma sorting. Sebagai contoh, untuk kasus  dimana jumlah masukan untuk suatu pengurutan banyak, lebih baik digunakan algoritma sorting seperti quick sort, merge sort, atau heap sortkarena kompleksitas waktu untuk kasuk terburuk  adalah  O(n log n). Hal ini tentu akan sangatberbeda jika kita menggunakan algoritma sorting insertion sort atau bubble sort dimana waktu yang dibutuhkan untuk melakukan pencarian akan sangat lama. Hal ini disebabkan kompleksitas waktu terburuk untuk algoritma sorting tersebut dengan jumlah masukan yang banyak adalah O(n2).

 Kompleksitas Algoritma Bubble Sort

Kompleksitas Algoritma Bubble Sort dapat dilihat dari beberapa jenis kasus, yaitu worst-case, average-case, dan best-case.

Ø  Kondisi Best-Case

Dalam kasus ini, data yang akan disorting telah terurut sebelumnya, sehingga proses perbandingan hanya dilakukan sebanyak (n-1) kali, dengan satu kali pass.
Proses perbandingan dilakukan hanya untuk memverifikasi keurutan data. Contoh Best-Case dapat dilihat pada pengurutan data “1 2 3 4” di bawah ini.

Pass Pertama
(1 2 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)

Dari proses di atas, dapat dilihat bahwa tidak terjadi penukaran posisi satu kalipun, sehingga tidak dilakukan pass selanjutnya. Perbandingan elemen dilakukan sebanyak tiga kali. Proses perbandingan pada kondisi ini hanya dilakukan sebanyak (n-1) kali. Persamaan Big-O yang diperoleh dari proses ini adalah O(n). Dengan kata lain, pada kondisi Best-Case algoritma Bubble Sort termasuk pada algoritma
lanjar.


Ø  Kondisi Worst-Case

Dalam kasus ini, data terkecil berada pada ujung array. Contoh Worst-Case dapat dilihat pada pengurutan data “4 3 2 1” di bawah ini.

Pass Pertama
(4 3 2 1) menjadi (3 4 2 1)
(3 4 2 1) menjadi (3 2 4 1)
(3 2 4 1) menjadi (3 2 1 4)
Pass Kedua
(3 2 1 4) menjadi (2 3 1 4)
(2 3 1 4) menjadi (2 1 3 4)
(2 1 3 4) menjadi (2 1 3 4)
Pass Ketiga
(2 1 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)
Pass Keempat
(1 2 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)
(1 2 3 4) menjadi (1 2 3 4)

Dari langkah pengurutan di atas, terlihat bahwa setiap kali melakukan satu pass, data terkecil akan bergeser ke arah awal sebanyak satu step. Dengan kata lain, untuk menggeser data terkecil dari urutan keempat menuju urutan pertama, dibutuhkan pass sebanyak tiga kali, ditambah satu kali pass untuk memverifikasi. Sehingga jumlah proses pada kondisi best case dapat dirumuskan sebagai berikut. Jumlah proses = n2+n (3)
Dalam persamaan (3) di atas, n adalah jumlah elemen yang akan diurutkan. Sehingga notasi Big-O yang didapat adalah O(n2). Dengan kata lain, pada kondisi worst-case, algoritma Bubble Sort termasuk dalam kategori algoritma kuadratik.

Ø  Kondisi Average-Case

Pada kondisi average-case, jumlah pass ditentukan dari elemen mana yang mengalami penggeseran ke kiri paling banyak. Hal ini dapat ditunjukkan oleh proses pengurutan suatu array, misalkan saja (1 8 6 2). Dari (1 8 6 2), dapat dilihat bahwa yang akan mengalami proses penggeseran paling banyak adalah elemen 2, yaitu sebanyak dua kali.

Pass Pertama
(1 8 6 2) menjadi (1 8 6 2)
(1 8 6 2) menjadi (1 6 8 2)
(1 6 8 2) menjadi (1 6 2 8)
Pass Kedua
(1 6 2 8) menjadi (1 6 2 8)
(1 6 2 8) menjadi (1 2 6 8)
(1 2 6 8) menjadi (1 2 6 8)
Pass Ketiga
(1 2 6 8) menjadi (1 2 6 8)
(1 2 6 8) menjadi (1 2 6 8)
(1 2 6 8) menjadi (1 2 6 8)

Dari proses pengurutan di atas, dapat dilihat bahwa untuk mengurutkan diperlukan dua buah passing, ditambah satu buah passing untuk memverifikasi. Dengan kata lain, jumlah proses perbandingan dapat dihitung sebagai berikut. Jumlah proses = x2+x (4) Dalam persamaan (4) di atas, x adalah jumlah penggeseran terbanyak. Dalam hal ini, x tidak pernah lebih besar dari n, sehingga x dapat dirumuskan sebagai
Dari persamaan (4) dan (5) di atas, dapat disimpulkan bahwa notasi
big-O nya adalah O(n2). Dengan kata lain, pada kondisi average case algoritma Bubble Sort termasuk dalam algoritma kuadratik.

Implementasi dalam Pseudo-Code

Setiap algoritma akan memiliki implementasi yang berbeda, tergantung dari bahasa program yang dipakai. Oleh karena itu berikut ini adalah pseudo-code dari algoritma bubblesort, untuk memudahkan implementasi bubblesort pada bahasa apapun.

procedure bubbleSort( A : list of
sortable items ) defined as:
do
swapped := false
for each i in 0 to length(A) - 2
inclusive do:
if A[i] > A[i+1] then
swap( A[i], A[i+1] )
swapped := true
end if
end for
while swapped
end procedure

WORKSHOP BAB 9

NO.1 : C++  : #include <iostream> #define maks 10 using namespace std; /* run this program using the console pauser or add your o...