Senin, 19 Desember 2011

DESKRIPSI ANTRIAN PARKIR MOTOR DI MALL

Dalam antrian ini, kami membahas tentang rancangan atau prosedur “Antrian parkir motor di suatu Mall. Akan tetapi sebelum, kita akan membahas pengertian “antrian queue”.
Antrian (queue) adalah struktur data yang menerapkan suatu aturan penyisipan di satu ujung dan penghapusan diujung yang lainnya, atau dengan menerapkan aturan FIFO (First In First Out/masuk pertama, keluar pertama). Dalam antrian penambahan (di belakang-rear) dan penghapusan (di depan-front) dilakukan pada tempat yang berbeda.
Contoh :
Dalam antrian X terdapat [1,2,3,4,5]. Pada bagian depan dinotasikan dari antrian X sebagai front(X) dan pada bagian belakang sebagai rear(X). Maka antrian X = [1,2,3,4,5] : front(X)=1 dan rear(X)=5.
Setelah kita bahas apa itu antrian, sekarang kita bahas tentang antrian parkir motor di Mall.
Pelayanan pada antrian parkir motor di Mall tersebut hanya dilayani oleh satu Loket parkir saja, sehingga jika terdapat banyak pengunjung yang berdatangan di Mall, maka semakin panjang pula antriannya dan memakan waktu yang cukup lama.
Pada antrian ini menggunakan situasi dimana petugas parkir akan menyelesaikan pelayanannya, baru melayani orang yang diprioritaskan. Dan “first come first serve” yaitu orang yang datang lebih dulu akan dilayani terlebih dahulu.
Petugas parkir akan melayani orang yang datang lebih dulu dengan mendata plat motor pengunjung Mall tersebut dan memberikan kertas parkir kepada pengunjung, sebagai bukti parkir. Setelah pelayanan selesai barulah petugas parkir akan melayani pengantri selanjutnya.
Berikut gambar simulasinya :

Dalam gambar diatas, dapat diasumsikan bahwa motor pertama, dengan plat ‘AB 1000 BC’ sebagai pengantri pertama, kemudian di lanjutkan dengan pengantri yang berikutnya dengan plat ‘AB 8888 BC’ dan seterusnya.

Selasa, 06 Desember 2011

Pengantar Stack

  • Stack merupakan suatu susunan koleksi data dimana data  dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengan top of stack
  • Stack bersifat LIFO (Last In First Out)
  • “Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack.
Operasi pada stack terdiri dari :
  1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
  2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
  3. Clear : digunakan untuk mengosongkan stack
  4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
  5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Selasa, 25 Oktober 2011

ARRAY DINAMIS

Array Dinamis
Dalam contoh-contoh di atas, ada batas tententu dalam jumlah elemennya, yaitu 100 int, 100 Pemain, dan 100 BentukGeometris. Karena ukuran array tidak bisa berubah, array tersebut hanya bisa menampung maksimum sebanyak elemen yang didefinisikan pada pembuatan array. Dalam banyak kasus, adanya batas maksimum tersebut tidak diinginkan. Kenapa harus bekerja dengan hanya 100 bilangan bulat saja, bukan 101?

Alternatif yang umum adalah membuat array yang sangat besar sehingga bisa digunakan untuk dalam kehidupan sehari-hari. Akan tetapi cara ini tidak baik, karena akan sangat banyak memori komputer yang terbuang karena tidak digunakan. Memori itu mungkin lebih baik digunakan untuk yang lain. Apalagi jika komputer yang akan digunakan tidak memiliki memori yang cukup untuk menjalankan program tersebut.

Tentu saja, cara yang lebih baik adalah apabila kita bisa mengubah ukuran array sesuka kita kapan saja. Ingat bahwa sebenarnya variabel array tidak menyimpan array yang sesungguhnya. Variabel ini hanya menyimpan referensi ke objek tersebut. Kita tidak bisa membuat array tersebut lebih besar, akan tetapi kita bisa membuat array baru yang lebih besar, kemudian mengubah isi variabel array tersebut ke array baru itu.

Tentunya kita harus mengkopi semua isi di array yang lama ke array baru. Array lama akan diambil oleh pemulung memori, karena ia tidak lagi digunakan.

Mari kita lihat kembali contoh game di atas, di mana ArrayPemain adalah array dengan tipe Pemain[] dan jumlahPemainAktif[/code] adalah jumlah pemain yang sudah digunakan array tersebut. Misalnya kita tidak ingin membuat limit banyaknya pemainnya yang bisa ikut main. Jika pemain baru masuk dan array tersebut sudah penuh, kita akan membuat array baru yang lebih besar.

Variabel ArrayPemain akan merujuk pada array baru. Ingat bahwa setelah ini dilakukan, ArrayPemain[0] akan menunjuk pada lokasi memori yang berbeda, akan tetapi nilai ArrayPemain[0] sama dengan sebelumnya. Berikut ini adalah kode untuk melakukan hal di atas:

// Tambah pemain baru, meskipun array sudah penuh

if (jumlahPemainAktif == ArrayPemain.length) {
// Array sudah penuh. Buat array baru yang lebih besar,
// kemudian kopi isi array lama ke array baru lalu ubah
// ArrayPemain ke array baru.
int ukuranBaru = 2 * ArrayPemain.length; // Ukuran array baru
Pemain[] temp = new Pemain[ukuranBaru]; // Array baru
System.arraycopy(ArrayPemain, 0, temp, 0, ArrayPemain.length);
ArrayPemain = temp; // Ubah referensi ArrayPemain ke array baru.
}

// Di sini kita sudah tahu bahwa pasti ada tempat di array baru.

ArrayPemain[jumlahPemainAktif] = pemainBaru; // Tambah pemain baru...
jumlahPemainAktif++; // ... dan tambah satu jumlahPemainAktif nya

Jika kita akan melakukan hal ini terus menerus, akan lebih indah jika kita membuat kelas untuk menangani hal ini. Objek mirip array yang bisa berubah ukuran untuk mengakomodasi jumlah data yang bisa ia tampung disebut array dinamis. Array dinamis memiliki jenis operasi yang sama dengan array : mengisi nilai pada posisi tertentu dan mengambil nilai di posisi tertentu. Akan tetapi tidak ada batas maksimum dari jumlah array (hanya tergantung pada jumlah memori komputer yang tersedia). Dalam kelas array dinamis, metode put dan get akan diimplementasikan sebagai metode instansi.

Di sini misalnya, adalah kelas yang mengimplementasikan array dinamis int :

public class ArrayDinamisInt {
private int[] data; // Array untuk menyimpan data
public DynamicArrayOfInt() {
// Konstruktor.
data = new int[1]; // Array akan bertambah besar jika diperlukan
}

public int get(int posisi) {
// Ambil nilai dari posisi tertentu di dalam array.
// Karena semua posisi di dalam array adalah nol, maka
// jika posisi tertentu di luar data array, nilai 0 akan dikembalikan
if (posisi >= data.length)
return 0;
else
return data[posisi];
}

public void put(int posisi, int nilai) {
// Simpan nilai ke posisi yang ditentukan di dalam array
// Data array tersebut akan bertambah besar jika diperlukan

if (posisi >= data.length) {
// Posisi yang ditentukan berada di luar array data
// Besarkan ukuran array 2x lipat. Atau jika ukurannya masih
// terlalu kecil, buat ukurannya sebesar 2*posisi

int ukuranBaru = 2 * data.length;
if (posisi >= ukuranBaru)
ukuranBaru = 2 * posisi;
int[] dataBaru = new int[ukuranBaru];
System.arraycopy(data, 0, dataBaru, 0, data.length);
data = dataBaru;

// Perintah berikut hanya untuk demonstrasi
System.out.println("Ukuran array dinamis diperbesar menjadi "
+ ukuranBaru);
}
data[posisi] = nilai;
}

} // akhir kelas ArrayDinamisInt

Data pada objek ArrayDinamisInt disimpan dalam array biasa, akan tetapi arraynya akan dibuang dan diganti dengan array baru yang lebih besar apabila diperlukan. Jika bilangan adalah variable bertipe ArrayDinamisInt, maka perintah bilangan.put(pos,nilai) akan menyimpan bilangan pada posisi pos di array dinamis tersebut. Fungsi bilangan.get(pos) mengambil nilai yang disimpan pada posisi pos.

Pada contoh pertama, kita menggunakan array untuk menyimpan bilangan bulat positif yang dimasukkan oleh user. Kita bisa menulis ulang program tersebut dengan menggunakan ArrayDinamisInt. Referensi ke bilangan[i] diganti dengan bilangan.get[i]. Perintah "bilangan[jmlBilangan] = bil;" kita ganti dengan "bilangan.put(jmlBilangan,bil);". Berikut ini adalah programnya:

public class BalikBilanganInput {

public static void main(String[] args) {

ArrayDinamisInt bilangan; // Array untuk menyimpan nilai input dari user
int jmlBilangan; // Banyaknya bilangan yang sudah disimpan dalam array
int bil; // Bilangan yang diambil dari user

bilangan = new ArrayDinamisInt();
jmlBilangan = 0; // Belum ada bilangan yang disimpan

System.out.println("Masukkan bilangan bulat positif, masukkan nol untuk mengakhiri.");

while (true) {
System.out.print("? ");
bil = KonsolIO.ambilInt();
if (bil <= 0)
break;
bilangan.put(jmlBilangan,bil);
jmlBilangan++;
}

System.out.println("\nBilangan yang Anda masukkan dalam urutan terbalik adalah :\n");

for (int i = jmlBilangan - 1; i >= 0; i--) {
System.out.println( bilangan.get(i) );
}

} // akhir main();

} // akhir kelas BalikBilanganInput

Minggu, 16 Oktober 2011

Konstruktor

Konstruktor digunakan untuk memberi nilai awal (inisialisasi) data member kelas.
Deklarasi Konstruktor
                        Kompleks(int s=0, int t=0) : a(s), b(t) { /* aksi */ }

Data member dari kelas Kompleks, yaitu s dan t akan diberi nilai 0 jika suatu
objek dideklarasikan tanpa parameter. Sebagai contoh :
Kompleks P;
                       Objek P (dalam logika kita) berbentuk : 0 + 0i.

Bila objek P dideklarasikan dengan satu parameter, maka hanya s yang akan
diinisialisasi melalui deklarasi tersebut, sebagai contoh :
             Kompleks P(-2);
Objek P (dalam logika kita) berbentuk : -2 + 0i. (bagaimana deklarasi objek, jika yang dikehendaki adalah bilangan kompleks berbentuk 0 – 2i ?)

Bila objek P dideklarasikan dengan dua parameter, maka baik s dan t akan diinisialisasi melalui deklarasi tersebut, sebagai contoh :
             Kompleks P(-2, 5);
Objek P (dalam logika kita) berbentuk : -2 + 5i.

Matriks Simetri

#include <iostream.h>
#include <conio.h>
#define maks 25
class MatrikSimetri{
      public :
             MatrikSimetri();
             void input_matriks();
             void output_matriks();
             void uji_matriks();
      private:
              int matriks[maks][maks];
              int baris_matriks,kolom_matriks;
      };

MatrikSimetri::MatrikSimetri(){
cout<<"Banyaknya  baris matriks : ";
cin>>baris_matriks;
cout<<"Banyaknya kolom matriks : ";
cin>>kolom_matriks;
cout<<endl;
}

void MatrikSimetri::input_matriks(){
for(int i=0;i<baris_matriks;i++){
for(int j=0;j<kolom_matriks;j++){
cout<<"Baris["<<i+1<<"] Kolom["<<j+1<<"]: ";
cin>>matriks[i][j];
                   }
                   }
}

void MatrikSimetri::output_matriks(){
cout<<endl;
for(int i=0;i<baris_matriks;i++){
for(int j=0;j<kolom_matriks;j++){
cout<<matriks[i][j]<<" ";
}
cout<<endl;
       }
}

void MatrikSimetri::uji_matriks(){
cout<<endl;
if(baris_matriks==kolom_matriks){
cout<<"Matriks di atas merupakan 'matriks simetri'\n";
                            }
else{
cout<<"Matriks di atas 'bukan matriks simetri'\n";
               }
}
int main()
{
    MatrikSimetri matriksimetri;
    matriksimetri.input_matriks();
    cout<<"\nMatriks yang terbentuk adalah";
    matriksimetri.output_matriks();
    matriksimetri.uji_matriks();
    cout<<endl;
    getch ();
    return 0 ;
}

Kamis, 07 Juli 2011

Program Kode Hari

include <iostream.h>
main ()
{
char hari;
cout < < "Masukkan kode hari : ";
cin >> hari;
if (hari==’a'||hari == ‘A’){
cout << “Senin”;}
else if (hari==’b'||hari==’B'){
cout << “Selasa”;}
else if (hari==’c'||hari== ‘C’){
cout << “Rabu”;}
else if (hari==’d'||hari== ‘D’){
cout << “Kamis”;}
else if (hari==’e'||hari==’E'){
cout << “Jumat”;}
else if (hari==’f'||hari==’F'){
cout << “Sabtu”;}
else if (hari==’g'||hari== ‘G’){
cout << “Minggu”;}
else
cout << “MAAF KODE YANG ANDA MASUKKAN SALAH.!”;
return 0;
}

Penggunaan Class Pada Bahasa C++

#include
#include
#include
#include
#include
#include
class kelas{
      public :
           char *value;
           kelas(){
           value=new char(3);
           strcpy(value,”???”);
           cetak(“Pertama kali dijalankan value = “);
}
            virtual ~kelas();
            void input(){baca(80);
}
            int length();
            int memsize();
private:
void cetak(char *kata){
        printf(“%s %s\n”,kata,value);
};
protected:
int len;
int mem;
void baca(int length){
delete value;
value=new char(length);
cout <len;
}
int kelas::memsize(){return this->mem;
}
kelas::~kelas(){
this->cetak(“Keluar dari kelas value = “);
delete value;
}
void main(){
kelas *kata=new kelas;
kata->input();
cout <<”\n\nPanjang string = “<length()<<”\n”;
cout <<”Isinya = “<value <<”\n\n”;
cout <<”Memori kelas kata = “<<sizeof(kata)<len dan kelas->mem dan
//fungsi kelas->baca()
//tidak dikenal pada objek kata.
//hanya ada pada objek kelas
//juga void kelas->cetak() tidak dapat dipakai pada objek kata
delete kata;
return;
}

Penjelasan :
Class hampir sama dengan tipe struct, bedanya class dapat bersifat public, private, dan protected.
Anggota private hanya digunakan dalam class/friend, semua anggota class adalah private.
Anggota protected, sama saja dengan private. Dikit perbedaan. Susah jelasinnya.
Anggota public dapat digunakan oleh semua fungsi. Juga dapat digelar di luar dari struktur class. Anggota virtual yang terdapat di public digunakan untuk memanggil secara otomatis ketika class menjadi objek dengan operator new (perhatikan void main()). Dan juga dipanggil otomatis ketika objek dihapus dengan operator delete objek.
Dalam contoh di atas fungsi kelas() dipanggil secara otomatis ketika new, dan secara otomatis ~kelas() dipanggil juga secara otomatis ketika delete.
Fungsi-2 atau variabel private/protected tidak dapat dipakai dalam objek.

MATRIKS

Dalam penjumlahan dan pengurangan  dua buah matrik, antara marik A dan matrik B, jumlah kolom dan baris haruslah sama. Jika tidak sama, maka dua buah matrik tersebut tidak bisa untuk dijumlahkan maupun dikurangkan.
Dibawah ini merupakan program penjumlahan dan pengurang dua buah matrik, yaitu matrik A dan matrik B.

#include <iostream.h>  //Header
#include <conio.h>
int main()
{
int colA,colB,rowA,rowB,i,j;  //Deklarasi
int A[10][10],B[10][10],C[10][10];
char answer;
do
{
do
{
cout<<"MATRIKS A : "<<endl;
cout<<"Masukkan Jumlah Baris Matriks A : ";     //Input Data Matrik
cin>>rowA;
cout<<"Masukkan Jumlah Kolom Matriks A : ";
cin>>colA;
cout<<endl<<endl;
cout<<"MATRIKS B : "<<endl;
cout<<"Masukkan Jumlah Baris Matriks B : ";
cin>>rowB;
cout<<"Masukkan Jumlah Kolom Matriks B : ";
cin>>colB;
}
while ((colA!=colB) || (rowA!=rowB));
cout<<"\n";
cout<<"Masukkan Nilai Matriks A : "<<endl;
for(i=1;i<=rowA;i++)      //Proses
{
for(j=1;j<=colA;j++)
{
cout<<"A["<<i<<","<<j<<"] = ";
cin>>A[i][j];
}
}
cout<<"\n";
cout<<"Masukkan Nilai Matriks B : "<<endl;
for(i=1;i<=rowB;i++)
{
for(j=1;j<=colB;j++)
{
cout<<"B["<<i<<","<<j<<"] = ";
cin>>B[i][j];
}
}
cout<<endl;

//Proses Penjumlahan Matriks
for(i=1;i<=rowA;i++)
{
for(j=1;j<=colA;j++)
{
C[i][j] = A[i][j] + B[i][j];
}
}
cout<<endl;
cout<<"Penjumlahan Matriks, C = A + B"<<endl;

for(i=1;i<=rowA;i++)
{
for(j=1;j<=colA;j++)
{
cout<<"C["<<i<<","<<j<<"] = ";
cout<<C[i][j]<<endl;
}
}
cout<<endl;

//Proses Pengurangan Matriks
for(i=1;i<=rowA;i++)
{
for(j=1;j<=colA;j++)
{
C[i][j] = A[i][j] - B[i][j];
}
}
cout<<"Pengurangan Matriks, C = A - B"<<endl;
for(i=1;i<=rowA;i++)
{
for(j=1;j<=colA;j++)
{
cout<<"C["<<i<<","<<j<<"] = ";
cout<<C[i][j]<<endl;
}
}
cout<<endl;
getch();
cout<<"== PROGRAM SELESAI =="<<endl<<endl;
cout<<"Mau Melakukan Perhitungan Lagi?? [Y/T]"; cin>>answer;
}
while ((answer == 'y') || (answer == 'Y'));
}

BUBBLE SORT

Bubble sort is a simple and well-known sorting algorithm. It is used in practice once in a blue moon and its main application is to make an introduction to the sorting algorithms. Bubble sort belongs to O(n2) sorting algorithms, which makes it quite inefficient for sorting large data volumes. Bubble sort is stable and adaptive.

Algorithm

  1. Compare each pair of adjacent elements from the beginning of an array and, if they are in reversed order, swap them.
  2. If at least one swap has been done, repeat step 1.
You can imagine that on every step big bubbles float to the surface and stay there. At the step, when no bubble moves, sorting stops. Let us see an example of sorting an array to make the idea of bubble sort clearer.

Example, sort (5, 1, 12, -5, 16) using bubble sort
Sorting Process :
5  1  12  -5  16  --> unsorted
5  1  12  -5  16 --> 5 > 1, swap
5  12  -5  16 --> 5 < 12, ok
1  5  12  -5  16 --> 12 > -5, swap
1  5  -5  12  16 --> 12 < 16, ok

1  5  -5  12  16 --> 1 < 5, ok
5  -5  12  16 --> 5 > -5, swap
1 -5   5  12  16 --> 5 < 12, ok

1  -5  5  12  16 --> 1 > -5, swap
-5  1  5  12  16 --> 1 < 5, ok

-5  1  5  12  16 --> -5 < 1, ok

-5  1  5  12  16 --> sorted

Memindahkan Pointer

 Berikut adalah program untuk memindahkan sebuah pointer.

#include <iostream.h>
#include <conio.h>

int main(){
    int A=5;
    int B=3;
    cout<<"Nilai A : "<<A<<endl;
    cout<<"Nilai B : "<<B<<endl;
    int *Pa =&A;
    cout<<"Nilai yg ditunjukkan poiter Pa (var.A) : "<<*Pa<<endl;
    int *Pb =&B;
    cout<<"Nilai yg ditunjukkan poiter Pb (var.B) : "<<*Pb<<endl;
    Pa=Pb;
    cout<<"Setelah tugas Pa diubah : \n";
    cout<<"Nilai yg ditunjukkan poiter Pb (var.B) : "<<*Pb<<endl;
    cout<<"Nilai yg ditunjukkan poiter Pa (var.A) : "<<*Pa<<endl;
getch();
return 0;
}

Hasilnya nanti, ketika nilai A dan B diberikan nilai,
misal, nilai A = 5 dan B = 3
.nilai yang ditunjukkan pointer Pa (var.A) = 5
.nilai yang ditunjukkan pointer Pb (var.B) = 3
=>Setelah Pa diubah atau dipindahkan menjadi :
.nilai yang ditunjukkan pointer Pb (var.B) = 3
.nilai yang ditunjukkan pointer Pa (var.A) = 3

GRAPH

Graf adalah :
♦ Himpunan V (Vertex) yang elemennya disebut simpul (atau point atau node atau titik).
♦ Himpunan E (Edge) yang merupakan pasangan tak urut dari simpul, anggotanya disebut ruas (rusuk atau sisi).

Dalam graph juga terdapat graph dengan tiga titik simpul. Berikut adalah programnya :
#include <iostream.h>
#include <string.h>
#include <conio.h>

int main ()
{
    char kata1;
    char kata2;
    char kata3;
    int a, b, c;

    cout<<"Menghitung Jarak pada Graf dengan 3 Titik Simpul"<<endl;
    cout<<endl;
    cout<<"Inputkan titik simpul ke-1 :";cin>>kata1;
    cout<<endl;
    cout<<"Inputkan titik simpul ke-2 : ";cin>>kata2;
    cout<<endl;
    cout<<"Inputkan titik simpul ke-3 : ";cin>>kata3;
    cout<<endl;
    cout<<"Jadi Garis yang dapat dibentuk dari 3 titik simpul tersebut adalah : "<<endl;
    cout<<kata1<<kata3<<endl;
    cout<<kata3<<kata2<<endl;
    cout<<kata2<<kata1<<endl<<endl;
    cout<<"Inputkan jarak antara titik simpul "<<kata1<<" dengan "<<kata3<<" : ";cin>>a;
    cout<<"Inputkan jarak antara titik simpul "<<kata3<<" dengan "<<kata2<<" : ";cin>>b;
    cout<<"Inputkan jarak antara titik simpul "<<kata2<<" dengan "<<kata1<<" : ";cin>>c;
    cout<<endl<<endl;
    cout<<"Jadi panjang jarak pada graf tersebut adalah : "<<a+b+c<<endl<<endl;

    cout<<"Mencari jalur terpendek dari "<<kata1<<" menuju "<<kata3<<" : "<<endl;
    cout<<"Alternatif pertama: "<<kata1<<" -> "<<kata2<<" -> "<<kata3<<" = "<<kata1<<kata2<<" +   "<<kata2<<kata3<<endl;
    cout<<" panjangnya adalah: "<<c<<" + "<<b<<" = "<<c+b<<endl;
    cout<<"Alternatif kedua: "<<kata1<<" -> "<<kata3<<" panjangnya adalah: "<<a<<" => jalur terpendek"<<endl;

    return 0;
    }

Selasa, 14 Juni 2011

How Are The Sales Selling The Computer

This is a computer sales program that will display the data table the number of sales to sell computers, which occurred in a computer store.

Here is the source code "How are the sales selling the computer".
#include<iostream>
#include<conio.h>
using namespace std;

class Sales {
public :
Sales();
void print_selling();
void print_sales();
void sum_selling_sales();
void sum_selling_month();
void search_max_selling(int &temp1, int &temp2);
private :
int penjualan[5][5];
char *sales_name[5];
int total_sales[5];
int total_month[5];
};

void Sales::print_selling(){
cout << "Data of selling in the Computer shop (Monthly and Sales) : " << endl;
for (int i=0; i < 5; i++) {
for (int j=0; j < 5; j++) {
cout << penjualan[i][j] << "\t";
}
cout << endl;
}
}

void Sales::print_sales() {
cout << "Name of sales : " << endl;
for (int i=0; i < 5; i++) {
cout << sales_name[i] << "\t";
cout << endl;
}
}

Sales::Sales() {
penjualan[0][0] = 34;
penjualan[0][1] = 15;
penjualan[0][2] = 100;
penjualan[0][3] = 22;
penjualan[0][4] = 55;
penjualan[1][0] = 12;
penjualan[1][1] = 27;
penjualan[1][2] = 10;
penjualan[1][3] = 45;
penjualan[1][4] = 12;
penjualan[2][0] = 6;
penjualan[2][1] = 30;
penjualan[2][2] = 20;
penjualan[2][3] = 15;
penjualan[2][4] = 70;
penjualan[3][0] = 50;
penjualan[3][1] = 20;
penjualan[3][2] = 34;
penjualan[3][3] = 70;
penjualan[3][4] = 24;
penjualan[4][0] = 72;
penjualan[4][1] = 40;
penjualan[4][2] = 62;
penjualan[4][3] = 18;
penjualan[4][4] = 46;
sales_name[0] = "Agus";
sales_name[1] = "Bambang";
sales_name[2] = "Catur";
sales_name[3] = "Dita";
sales_name[4] = "Erna";
}

void Sales::sum_selling_sales() {
cout << "Total selling (Per Sales) : " << endl;
for (int i=0; i < 5; i++) {
total_sales[i] = 0;
for (int j=0; j < 5; j++) {
total_sales[i] += penjualan[i][j];
}
cout << total_sales[i] << endl;
}
}

void Sales::sum_selling_month() {
float rata[5];
cout << "Total selling (Monthly) : " << endl;
for (int j=0; j < 5; j++) {
total_month[j] = 0;
for (int i=0; i < 5; i++) {
total_month[j] += penjualan[i][j];
}
rata[j] = total_month[j]/ 5.0;
cout << total_month[j] << "\t" << rata[j] << endl;
}
}

void Sales::search_max_selling(int &temp1, int &temp2) {
int i, j, max = penjualan[0][0];
for (i = 0; i < 5; i++)
for (j = 0; j < 5; j++)
if (penjualan[i][j] > max)
{ max = penjualan[i][j];
temp1 = i;
temp2 = j;
}
cout << "Top selling is : " << max << " at month : " << temp2 << endl;
cout << "And sales name is : " << sales_name[temp1] << endl;
}

int main(int argc, char *argv[])
{
int a, b;
Sales X;
X.print_selling();
X.print_sales();
X.sum_selling_sales();
X.sum_selling_month();
X.search_max_selling(a,b);
system("PAUSE&quot;);
return EXIT_SUCCESS;
}

Menghitung Usia


  •   Analisis :
Menghitung usia dimana masing masing tanggal dikonversi ke bilangan kemudian dihitung selisihnya.
  • Tes Data
Misalnya :
Tanggal sekarang – tanggal lahir = 8 – 8 = 0 hari
Bulan sekarang – bulan lahir = 6 – 4 = 2 bulan
Tahun sekarang – tahun lahir = 2011 – 1992 = 19 tahun
Jadi, umur Aly sekarang adalah 19 tahun 2 bulan 0 hari
  • Programnya :

#include <conio.h>
#include <iostream.h>

int main(){
int tgl_skrng,bln_skrng,thn_skrng,tgl_lahir,bln_lahir,thn_lahir,tahun,bulan1,
bulan2,tgl1,tgl2;

cout<<"masukan tanggal sekarang : ";
cin>>tgl_skrng;
cout<<"masukan bulan sekarang : ";
cin>>bln_skrng;
cout<<"masukan tahun sekarang : ";
cin>>thn_skrng;
cout<<endl;

cout<<"masukan tanggal lahir anda: ";
cin>>tgl_lahir;
cout<<"masukan bulan lahir anda : ";
cin>>bln_lahir;
cout<<"masukan tahun lahir anda : ";
cin>>thn_lahir;
cout<<endl;

tahun=thn_skrng-thn_lahir;
bulan1=bln_skrng-bln_lahir;
bulan2=bln_lahir-bln_skrng;
tgl1=tgl_skrng-tgl_lahir;
tgl2=tgl_lahir-tgl_skrng;

{
if((thn_skrng>thn_lahir)&&(tgl_skrng>=tgl_lahir)&&(bln_skrng>=bln_lahir))
{
cout<<"Umur anda: "<<tahun<<" tahun "<<bulan1<< " bulan "<<tgl1<< " hari "<<endl;
}

else if((thn_skrng>thn_lahir)&&(tgl_lahir>=tgl_skrng)&&(bln_lahir>=bln_skrng))
{
cout<<"Umur anda: "<<tahun<< " tahun "<<bulan2<< " bulan " <<tgl2<< " hari "<<endl;
}

else if((thn_skrng>thn_lahir)&&(tgl_skrng>=tgl_lahir)&&(bln_lahir>=bln_skrng))
{
cout<<"Umur anda: "<<tahun<<" tahun "<<bulan2<<" bulan "<<tgl1<<" hari "<<endl;
}

else if((thn_skrng>thn_lahir)&&(tgl_lahir>=tgl_skrng)&&(bln_skrng>=bln_lahir))
{
cout<<"Umur anda: "<<tahun<<" tahun "<<bulan1<<" bulan "<<tgl2<<" hari "<<endl;
}
else
{
cout<<"data yang anda masukan salah"<<endl;
}
}

getch();

}




Selisih Dua Waktu


    Analisis :
Mencari selisih dua waktu yang waktu akhir dan awal dikonversikan menjadi detik dan kemudian dihitung selisihnya sehingga menghasilkan selisih waktu.
  • Programnya :
#include<iostream.h>
#include<conio.h>

main(){
 int j1,m1,d1,j2,m2,d2,d3,d5,w,x,y,z;
 cout<<"Masukkan Waktu 1 :"<<endl;
 cout<<"Jam   = "; cin>>j1;
 cout<<"Menit = "; cin>>m1;
 cout<<"Detik = "; cin>>d1;
 d3=(j1*3600)+(m1*60)+d1;
 cout<<"Konversi Waktu 1 ke Detik : "<<d3;
 cout<<" "<<endl;  cout<<" "<<endl;
 cout<<"Masukkan Waktu 2 :"<<endl;
 cout<<"Jam   = "; cin>>j2;
 cout<<"Menit = "; cin>>m2;
 cout<<"Detik = "; cin>>d2;
 d5=(j2*3600)+(m2*60)+d2;
 cout<<"Konversi Waktu 2 ke Detik : "<<d5;
 cout<<" "<<endl;  cout<<" "<<endl;
 d5=d3-d5;
 cout<<"Selisih Detik 1 dengan Detik 2 : "<<d5;
 cout<<" "<<endl;  cout<<" "<<endl;
 cout<<"Konversi Selisih ke Waktu :"<<endl;
 w=d5/3600;
 x=d5%3600;
 y=x/60;
 z=x%60;
 cout<<"Jam   = "<<w<<endl;
 cout<<"Menit = "<<y<<endl;
 cout<<"Detik = "<<z<<endl;
 getch();
  }



ALGORITMA DAN PROGRAM MENCARI JARAK 2 TITIK


1.      Analisis
Mencari jarak dua titik pada sebuah koordinat yang inputannya x1, x2, y1, y2
2.      Identifikasi
Input : koordinat A(x1,y1) dan B(x2,y2)
Output : jarak
3.      Algoritma

Deklarasi :
x1,x2,y1,y2,a,b  : int
jarak                 : float

Deskripsi :
Baca x1;
Baca x2;
Baca y1;
Baca y2;
jarak=(sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))));
End (Tulis jarak)


4.     Program
 #include<cstdlib>


#include<iostream.h>


#include <conio.h>


#include<math.h>


using namespace std;


class jarak{


public:


void dua_titik();


float jarak_2titik();


private:


int  x1,x2,y1,y2,a,b;


float jarak;


};


void jarak::dua_titik(){


cout<<"menghitung jarak dua titik sebuah koordinat"<<endl;


cout<<"masukkan x1 : ";


cin>>x1;


cout<<"masukkan y1 : ";


cin>>y1;


cout<<"masukkan x2 : ";


cin>>x2;


cout<<"masukkan y2 : ";


cin>>y2;


}


float jarak::jarak_2titik(){


jarak=(sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))));


cout<<"jadi jaraknya adalah: "<<jarak;


}


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


{


jarak X;


X.dua_titik();


X.jarak_2titik();

getch();


return 0;


}