Kamis, 02 Juli 2015

Algoritma Mengurutkan 3 Bilangan dari yang Terkecil (C++)

Algoritma:
Algoritma Mengurutkan3Bilangan
    {dibaca 3 bilangan bulat (A, B, C) yang pasti berbeda, kemudian menampilkan bilangan tersebut dari yang terkecil}

Deklarasi:
    A, B, C : integer

Deskripsi:
    read(A, B, C)
    
    if A<B and A<C then
        if B<C then
            write(A, B, C)
        else
            write(A, C, B)
        endif
    else if B<A and B<C then
        if A<C then
            write(B, A, C)
        else
            write(B, C, A)
        endif
    else
        if B<A then
            write(C, B, A)
        else
            write(C, A, B)
        endif
    endif

Mengurutkan 3 bilangan dari yang terkecil ke terbesar. Dalam algoritma yang saya buat, saya ingin memastikan bahwa nilai A adalah yang terkecil dengan cara membandingkan nilainya dengan nilai B dan C. Apabila A yang terkecil, maka tinggal membandingkan nilai B dengan nilai C. Sehingga akan terurut A-B-C atau A-C-B. Begitupula dengan yang lain.

Source code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

int main(){
    int a, b, c;
    
    cout << "Masukkan nilai A : "; cin >> a;
    cout << "Masukkan nilai B : "; cin >> b;
    cout << "Masukkan nilai C : "; cin >> c;
    
    if(a<b && a<c){
        if(b<c){
            cout << a << ' ' << b << ' ' << c << endl;
        }else{
            cout << a << ' ' << c << ' ' << b << endl;
        }
    }else if(b<a && b<c){
        if(a<c){
            cout << b << ' ' << a << ' ' << c << endl;
        }else{
            cout << b << ' ' << c << ' ' << a << endl;
        }
    }else{
        if(b<a){
            cout << c << ' ' << b << ' ' << a << endl;
        }else{
            cout << c << ' ' << a << ' ' << b << endl;
        }
    }
    
    return 0;
}

Hasil:

Algoritma Konversi Nilai ke Huruf (C++)


Konversi Nilai ke Huruf, biasanya berkaitan dengan IP (Indeks Prestasi). Indeks prestasi adalah salah satu alat ukur prestasi di bidang akademik/pendidikan. Meskipun bernama "indeks", IP sebenarnya bukanlah indeks dalam pengertian sebenarnya, melainkan semacam rerata terboboti.

Dalam pembahasan kali ini, saya mengambil contoh apabila nilai mahasiswa 0-20 maka dia dapat E, 21-40 dapat B, 41-60 dapat C, 61-80 dapat B, dan 81-100 dapat A (bukan perhitungan IP yang sebenarnya). Dari data tersebut, algoritma yang bisa dibuat adalah sebagai berikut.

Algoritma:
Algoritma KonversiNilai
    {membaca nilai mahasiswa dalam bentuk angka dan menampilkan dalam huruf (81-100 = A, 61-80 = B, 41-60 = C, 21-40 = D, 0-20 = E)}

Deklarasi:
    nilai : integer

Deskripsi:
    read(nilai)

    if nilai>=81 and nilai <=100 then
        write('A')
    else if nilai>=61 and nilai<=80 then
        write('B')
    else if nilai>=41 and nilai<=60 then
        write('C')
    else if nilai>=21 and nilai<=40 then
        write('D')
    else if nilai>=0 and nilai<=20 then
        write('E')
    else
        write('?')
    endif

Source code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

int main(){
    int nilai;
    
    cout << "Masukkan nilai Anda : "; cin >> nilai;
    
    if(nilai>=81 && nilai<=100){
        cout << 'A' << endl;
    }else if(nilai>=61 && nilai<=80){
        cout << 'B' << endl;
    }else if(nilai>=41 && nilai<=60){
        cout << 'C' << endl;
    }else if(nilai>=21 && nilai<=40){
        cout << 'D' << endl;
    }else if(nilai>=0 && nilai<=20){
        cout << 'E' << endl;
    }else{
        cout << '?' << endl;
    }
    
    return 0;
}

Source code dengan class:
#include <iostream>
//develop251.blogspot.com
using namespace std;

class Penilaian{
    private:
        int nilaiAngka;
        char nilaiHuruf;

    public:
        void inputNilaiAngka(){
            cout << "Masukkan nilai Anda : ";
            cin >> nilaiAngka;
        }

        void outputNilaiHuruf(){
            if(nilaiAngka>=81 && nilaiAngka<=100){
                nilaiHuruf = 'A';
            }else if(nilaiAngka>=61 && nilaiAngka<=80){
                nilaiHuruf = 'B';
            }else if(nilaiAngka>=41 && nilaiAngka<=60){
                nilaiHuruf = 'C';
            }else if(nilaiAngka>=21 && nilaiAngka<=40){
                nilaiHuruf = 'D';
            }else if(nilaiAngka>=0 && nilaiAngka<=20){
                nilaiHuruf = 'E';
            }else{
                nilaiHuruf = '?';
            }

            cout << "Nilai Anda : " << nilaiHuruf << endl;
        }
};

int main(){
    Penilaian penilaian;

    penilaian.inputNilaiAngka();
    penilaian.outputNilaiHuruf();

    return 0;
}

Hasil:



Referensi:
  • https://id.wikipedia.org/wiki/Indeks_prestasi

Algoritma Hambatan Seri dan Paralel Milih (C++)

Komponen sebuah rangkaian listrik atau rangkaian elektronik dapat dihubungkan dengan berbagai cara. Dua tipe paling sederhana adalah rangkaian seri dan paralel. Rangkaian yang disusun secara sejajar disebut rangkaian seri, sedangkan rangkaian yang disusun secara berderet disebut rangkaian paralel. Komponen yang tersusun seri akan terhubung melalui satu jalur, sehingga aliran arus listrik akan mengalir ke semua komponen. Pada rangkaian paralel, tegangan yang melewati tiap komponen adalah sama, dan total arus adalah jumlahan arus yang melewati tiap komponen.

Hambatan Total:
Seri: total hambatan resistor pada rangkaian seri sama dengan jumlahan masing-masing hambatan.

Paralel: jumlah kebalikan hambatan total rangkaian paralel sama dengan jumlah dari kebalikan hambatan tiap-tiap komponen (resistor).

Algoritma:
Algoritma HambatanListrik
    {dibaca 3 hambatan, ketiganya diinputkan oleh user dan HARUS lebihdari nol. Kemudian menampilkan pilihan 1 atau 2, jika memilih 1 maka menghitung hambatan secara seri, sedangkan 2 menghitung secara paralel}

Deklarasi:
    pil : integer
    r1, r2, r3, total : real

Deskripsi:
    repeat
        read(r1, r2, r3, pil)
    until(r1>0 and r2>0 and r3>0 and pil>0 and pil<3)
    
    if pil=1 then
        total <- r1 + r2 + r3
    else
        total <- 1 / ((1/r1) + (1/r2) + (1/r3))
    endif
    
    write(total)

Saya menggunakan perulangan repeat ... until ... dengan kondisi sampai seperti itu ( r1>0 and r2>0 and r3>0 and pil>0 and pil<3 ), ini saya gunakan agar nilai dari variabel r1, r2, r3, dan pil sesuai dengan spesifikasinya.

Source code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

int main(){
    int pil;
    float r1, r2, r3, total;
    
    do{
        cout << "Masukkan R1 : "; cin >> r1;
        cout << "Masukkan R2 : "; cin >> r2;
        cout << "Masukkan R3 : "; cin >> r3;
        cout << "Hitung? 1=Seri 2=Paralel : "; cin >> pil;
    }while(!(r1>0 and r2>0 and r3>0 and pil>0 and pil<3));
    
    if(pil==1){
        total = r1 + r2 + r3;
    }else{
        total = 1 / ((1/r1) + (1/r2) + (1/r3));
    }
    
    cout << "Total = " << total << endl;
    
    return 0;
}

Hasil:




Referensi:
  • https://id.wikipedia.org/wiki/Rangkaian_seri_dan_paralel

Algoritma Konversi Detik ke Jam Menit Detik (C++)

Algoritma:
Algoritma KonversiDetik
    {dibaca jam dalam detik, kemudian menampilkan dalam bentuk jam menit detik}

Deklarasi:
    type jam : record <j, m, d : integer>
    waktu : jam
    detik : integer

Deskripsi:
    read(detik)
    
    waktu.j <- detik/3600
    detik <- detik - (waktu.j * 3600)
    waktu.m <- detik/60
    waktu.d <- detik - (waktu.m * 60)
    
    write(waktu)

Dalam variabel detik, saya menggunakan tipedata integer, kenapa saya menggunakan integer? Saya memanfaatkan sifat dari tipedata tersebut, tipedata integer ketika dibagi dengan suatu nilai dan hasilnya mengandung pecahan, maka pecahan tersebut diabaikan atau tidak dipakai, dengan kata lain hasilnya dibulatkan ke bawah. Misalnya saja 5 / 4 = 1.25, tetapi ketika menggunakan tipe integer, 5 / 4 = 1, karena dibulatkan ke bawah atau pecahan diabaikan.

Source code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

struct jam{
    int d, m, j;
};

int main(){
    jam waktu;
    int detik;
    
    cout << "Masukkan detik : "; cin >> detik;
    
    waktu.j = detik/3600;
    detik = detik - (waktu.j * 3600);
    waktu.m = detik/60;
    waktu.d = detik - (waktu.m * 60);
    
    cout << waktu.j << " jam " << waktu.m << " menit " << waktu.d << " detik" << endl;
    
    return 0;
}

Hasil:

Algoritma Operasi Penjumlahan, Pengurangan, Perkalian, dan Pembagian Pecahan (C++)


Pecahan (Fraksi) adalah istilah dalam matematika yang terdiri dari pembilang dan penyebut. Pada operasi penjumlahan dan pengurangan pecahan, penyebutnya harus disamakan dengan bilangan yang sama, sedangkan pada operasi perkalian caranya adalah pembilang dikali pembilang, penyebut dikali penyebut. dan dalam operasi pembagian, pecahan yang di kanan dibalikkan, setelah dibalikkan, tanda : diubah menjadi tanda kali (X), seperti 3/4 : 5/6 = 3/4 X 6/5 = 18/20 = 9/10.

Algoritma:
Algoritma OperasiPecahan
    {dibaca 2 buah pecahan (p1 & p2) dalam pembilang dan penyebut. Menampilkan hasil penjumlahan (tb), pengurangan (kr), perkalian (kl), dan pembagian (bg)}

Deklarasi:
    type pecahan : record <x, y : integer>
    p1, p2, tb, kr, kl, bg : pecahan

Deskripsi:
    read(p1, p2)
    
    tb.x <- (p1.x*p2.y) + (p2.x*p1.y)
    tb.y <- p1.y * p2.y
    kr.x <- (p1.x*p2.y) - (p2.x*p1.y)
    kr.y <- p1.y * p2.y
    
    kl.x <- p1.x * p2.x
    kl.y <- p1.y * p2.y
    bg.x <- p1.x * p2.y
    bg.y <- p1.y * p2.x
    
    write(tb, kr, kl, bg)

Source code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

struct pecahan{
    int x, y;
};

int main(){
    pecahan p1, p2, tb, kr, kl, bg;
    
    cout << "Masukkan P1 x : "; cin >> p1.x;
    cout << "Masukkan P1 y : "; cin >> p1.y;
    cout << "Masukkan P2 x : "; cin >> p2.x;
    cout << "Masukkan P2 y : "; cin >> p2.y;
    
    tb.x = (p1.x*p2.y) + (p2.x*p1.y);
    tb.y = p1.y * p2.y;
    kr.x = (p1.x*p2.y) - (p2.x*p1.y);
    kr.y = p1.y * p2.y;
    
    kl.x = p1.x * p2.x;
    kl.y = p1.y * p2.y;
    bg.x = p1.x * p2.y;
    bg.y = p1.y * p2.x;
    
    cout << "Hasil jumlah = " << tb.x << '/' << tb.y << endl;
    cout << "Hasil kurang = " << kr.x << '/' << kr.y << endl;
    cout << "Hasil kali   = " << kl.x << '/' << kl.y << endl;
    cout << "Hasil bagi   = " << bg.x << '/' << bg.y << endl;
    
    return 0;
}

Hasil:



Referensi:
  • https://id.wikipedia.org/wiki/Pecahan

Algoritma Mencari Titik Tengah dari 2 Titik (C++)

Algoritma:
Algoritma MencariTitikTengah
    {dibaca 2 buah titik dari user, program akan menampilkan titik tengahnya}

Deklarasi:
    type titik : record <x, y : real>
    t1, t2, tt : titik

Deskripsi:
    read(t1, t2)
    tt.x <- (t1.x + t2.x) / 2
    tt.y <- (t1.y + t2.y) / 2
    write(tt)

Pada setiap titik, terdapat koordinat x dan juga y, dan itu bukan merupakan tipe data yang sudah ditentukan oleh bahasa pemrograman, maka dari itu kita perlu membuat tipe bentukan / tipe data baru. Untuk membuatnya kita ketik type namaVariabel : record < variabel : tipeDatanya >. Setelah dibuat, kita bisa menggunakan tipe tersebut seperti tipe data pada umumnya. Pada pengaksesannya, kita ketik nama variabelnya dan diikuti titik ( . ) lalu nama variabel yang ada di dalamnya.

Source Code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

struct titik{
    float x, y;
};

int main(){
    titik t1, t2, tt;
    
    cout << "Masukkan T1 x : "; cin >> t1.x;
    cout << "Masukkan T1 y : "; cin >> t1.y;
    cout << "Masukkan T2 x : "; cin >> t2.x;
    cout << "Masukkan T2 y : "; cin >> t2.y;
    
    tt.x = (t1.x + t2.x) / 2;
    tt.y = (t1.y + t2.y) / 2;
    
    cout << "Titik Tengah di x = " << tt.x << endl;
    cout << "Titik Tengah di y = " << tt.y << endl;
    
    return 0;
}

Hasil:

Algoritma Menukar Posisi 3 Bilangan (C++)

Algoritma:
Algoritma MenukarTigaBilangan
    {menukar posisi dari 3 bilangan yang dimasukkan oleh user, a diisi b, b diisi c, dan c diisi a}

Deklarasi:
    a, b, c, temp : integer

Deskripsi:
    read(a, b, c)
    temp <- a
    a <- b
    b <- c
    c <- temp
    write(a, b, c)

Disini kita butuh tambahan variabel keempat sebagai penampung sementara (temp), karena jika hanya menggunakan 3 variabel yang ada, maka proses penukaran tidak akan pernah berhasil.

Source Code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

int main(){
    int a, b, c, temp;
    
    cout << "Masukkan A : "; cin >> a;
    cout << "Masukkan B : "; cin >> b;
    cout << "Masukkan C : "; cin >> c;
    
    temp = a;
    a = b;
    b = c;
    c = temp;
    
    cout << "Isi A : " << a << endl;
    cout << "Isi B : " << b << endl;
    cout << "Isi C : " << c << endl;
    
    return 0;
}

Hasil:

Algoritma Hambatan Rangkaian Seri dan Paralel (C++)

Komponen sebuah rangkaian listrik atau rangkaian elektronik dapat dihubungkan dengan berbagai cara. Dua tipe paling sederhana adalah rangkaian seri dan paralel. Rangkaian yang disusun secara sejajar disebut rangkaian seri, sedangkan rangkaian yang disusun secara berderet disebut rangkaian paralel. Komponen yang tersusun seri akan terhubung melalui satu jalur, sehingga aliran arus listrik akan mengalir ke semua komponen. Pada rangkaian paralel, tegangan yang melewati tiap komponen adalah sama, dan total arus adalah jumlahan arus yang melewati tiap komponen.

Hambatan Total:
Seri: total hambatan resistor pada rangkaian seri sama dengan jumlahan masing-masing hambatan.

Paralel: jumlah kebalikan hambatan total rangkaian paralel sama dengan jumlah dari kebalikan hambatan tiap-tiap komponen (resistor).

Algoritma:
Algoritma HambatanSeriParalel
    {menampilkan hambatan total dari 3 hambatan yang disusun secara seri dan paralel, ketiga hambatan dibaca dari user}

Deklarasi:
    r1, r2, r3, s, p : real

Deskripsi:
    read(r1, r2, r3)
    s <- r1 + r2 + r3
    p <- 1 / ((1/r1) + (1/r2) + (1/r3))
    write(s, p)

Source Code:
#include <iostream>
//develop251.blogspot.com
using namespace std;

int main(){
    float r1, r2, r3, s, p;
 
    cout << "Masukkan R1 : "; cin >> r1;
    cout << "Masukkan R2 : "; cin >> r2;
    cout << "Masukkan R3 : "; cin >> r3;

    s = r1 + r2 + r3;
    p = 1 / ((1/r1) + (1/r2) + (1/r3));
 
    cout << "Hambatan Seri    = " << s << endl;
    cout << "Hambatan Paralel = " << p << endl;

    return 0;
}

Hasil:



Referensi:
  • https://id.wikipedia.org/wiki/Rangkaian_seri_dan_paralel

Algoritma Konversi Suhu (C++)


Suhu menunjukkan derajat panas suatu benda. Suhu juga disebut temperatur yang diukur dengan alat termometer. Empat macam termometer yang paling dikenal adalah Celcius, Reamur, Fahrenheit, dan Kelvin.


Mengacu pada SI, satuan suhu adalah Kelvin (K). Skala-skala lain adalah Celsius, Fahrenheit, dan Reamur.

Pada skala Celsius, 0 °C adalah titik di mana air membeku dan 100 °C adalah titik didih air pada tekanan 1 atmosfer. Skala ini adalah yang paling sering digunakan di dunia. Skala Celsius juga sama dengan Kelvin sehingga cara mengubahnya ke Kelvin cukup ditambahkan 273 (atau 273.15 untuk lebih tepatnya).

Skala Fahrenheit adalah skala umum yang dipakai di Amerika Serikat. Suhu air membeku adalah 32 °F dan titik didih air adalah 212 °F.

Sebagai satuan baku, Kelvin tidak memerlukan tanda derajat dalam penulisannya. Misalnya cukup ditulis suhu 20 K saja, tidak perlu 20° K.

Cara mudah untuk mengubah dari Celsius, Fahrenheit, dan Reamur adalah dengan mengingat perbandingan C:F:R = 5:9:4.


Algoritma:
Algoritma KonversiSuhu
    {menampilkan suhu dalam satuan Kelvin, Reamur, dan Fahrenheit, dengan masukan berupa suhu dalam satuan Celcius}

Deklarasi:
    c, k, r, f : real

Deskripsi:
    read(c)
    k <- c + 273.15
    r <- c * 0.8
    f <- c * 1.8 + 32
    write(k, r, f)

Source Code C++:
#include <iostream>
//develop251.blogspot.com
using namespace std;

int main(){
    float c, k, r, f;

    cout << "Masukkan suhu dalam C : "; cin >> c;

    k = c + 273.15;
    r = c * 0.8;
    f = c * 1.8 + 32;

    cout << "Suhu dalam K = " << k << endl;
    cout << "Suhu dalam R = " << r << endl;
    cout << "Suhu dalam F = " << f << endl;

    return 0;
}

Hasil:



Referensi:
  • https://id.wikipedia.org/wiki/Suhu