Rabu, 09 November 2011

Link list menggunakan template

ini contoh linklist circular menggunakan template
#include <iostream>
#include <string>

using namespace std;

template <class T>
class LinkedList
{
private:
struct node
{
T data;
node * next;
} *head;

public:
LinkedList();
~LinkedList();
void add(T d);
void remove(T d);
void clear();
void makeCircular();
bool isCircular();
void display(const char* s);
};

template <class T>
LinkedList<T>::LinkedList()
{
head = NULL;
}

template <class T>
LinkedList<T>::~LinkedList()
{
node *p, *q;
p = head;
if(p == NULL) return;
while(p) {
q = p->next;
delete p;
p = q;
}
}

template <class T>
void LinkedList<T>::add(T d)
{
node *p, *q;
if(head == NULL) {
head = new node;
head->data = d;
head->next = NULL;
return;
}
p = head;
while(p->next != NULL)
p = p->next;
q = new node;
q->data = d;
q->next = NULL;
p->next = q;
}

template <class T>
void LinkedList<T>::remove(T d)
{
node *p, *q;
if(head == NULL) return;
p = head;
while(p) {
if(p->data == d) {
q->next = p->next;
delete p;
return;
}
q = p;
p = p->next;
}
}

template <class T>
void LinkedList<T>::clear()
{
node *p, *q;
if(head == NULL) return;
p = head;
while(p) {
q = p->next;
delete p;
if(q != head) {
head = NULL;
return;
}
p = q;
}
}

template <class T>
void LinkedList<T>::makeCircular()
{
node *p;
if(head == NULL || head->next == NULL) return;
p = head;
while(p) {
if(p->next == NULL) {
p->next = head;
return;
}
p = p->next;
}
}

template <class T>
bool LinkedList<T>::isCircular()
{
node *p, *pp;
if(head == NULL || head->next == NULL) return false;
p = head;
pp = head;
while(pp) {
p = p->next;
if(pp->next == NULL) return false;
pp = (pp->next)->next;
if(p == pp) return true;
}
return false;
}

template <class T>
void LinkedList<T>::display(const char* s)
{
node *p;
if(head == NULL) return;
p = head;
while(p) {
if(s == "string")
cout << p->data << endl;
else
cout << p->data << ' ';
p = p->next;
if(p != NULL) {
if(p == head) return;
}
}
if(s == "integer") cout << endl;
}

int main()
{
LinkedList<string> sList;
sList.add("Wolfgang Amadeus Mozart");
sList.add("Franz Peter Schubert");
sList.add("Pyotr Ilyich Tchaikovsky");
sList.add("Clude-Achille Debussy");
sList.add("Camille Saint-Saens");
sList.display("string");
sList.clear();

LinkedList<int> iList;
iList.add(40);
iList.add(50);
iList.add(60);
iList.add(70);
iList.add(80);
iList.add(90);
iList.add(100);
iList.add(10);
iList.add(20);
iList.add(30);
iList.display("integer");

/* link last element to the first */
iList.makeCircular();

if(iList.isCircular()) cout <<"This is circular list\n";
iList.display("integer");

iList.clear();
cout << "\ndisplay after clear()\n";
iList.display("integer");

return 0;
}

Contoh Link list

Ini adalah contoh linklist
silahkan dicoba

#include <iostream>

using namespace std;

struct Node {
int data;
Node* next;
};

// only for the 1st Node
void initNode(struct Node *head,int n){
head->data = n;
head->next =NULL;
}

// apending
void addNode(struct Node *head, int n) {
Node *newNode = new Node;
newNode->data = n;
newNode->next = NULL;

Node *cur = head;
while(cur) {
if(cur->next == NULL) {
cur->next = newNode;
return;
}
cur = cur->next;
}
}

void insertFront(struct Node **head, int n) {
Node *newNode = new Node;
newNode->data = n;
newNode->next = *head;
*head = newNode;
}

struct Node *searchNode(struct Node *head, int n) {
Node *cur = head;
while(cur) {
if(cur->data == n) return cur;
cur = cur->next;
}
cout << "No Node " << n << " in list.\n";
}

bool deleteNode(struct Node **head, Node *ptrDel) {
Node *cur = *head;
if(ptrDel == *head) {
*head = cur->next;
delete ptrDel;
return true;
}

while(cur) {
if(cur->next == ptrDel) {
cur->next = ptrDel->next;
delete ptrDel;
return true;
}
cur = cur->next;
}
return false;
}

/* reverse the list */
struct Node* reverse(struct Node** List)
{
Node *parent = *List;
Node *me = parent->next;
Node *child = me->next;

/* make parent as tail */
parent->next = NULL;
while(child) {
me->next = parent;
parent = me;
me = child;
child = child->next;
}
me->next = parent;
*List = me;
return *List;
}

/* Creating a copy of a linked list */
void copyLinkedList(struct Node *node, struct Node **pNew)
{
if(node != NULL) {
*pNew = new Node;
(*pNew)->data = node->data;
(*pNew)->next = NULL;
copyLinkedList(node->next, &((*pNew)->next));
}
}

/* Compare two linked list */
/* return value: same(1), different(0) */
int compareLinkedList(struct Node *node1, struct Node *node2)
{
static int flag;

/* both lists are NULL */
if(node1 == NULL && node2 == NULL) {
flag = 1;
}
else {
if(node1 == NULL || node2 == NULL)
flag = 0;
else if(node1->data != node2->data)
flag = 0;
else
compareLinkedList(node1->next, node2->next);
}

return flag;
}

void deleteLinkedList(struct Node **node)
{
struct Node *tmpNode;
while(*node) {
tmpNode = *node;
*node = tmpNode->next;
delete tmpNode;
}
}

void display(struct Node *head) {
Node *list = head;
while(list) {
cout << list->data << " ";
list = list->next;
}
cout << endl;
cout << endl;
}

int main()
{
struct Node *newHead;
struct Node *head = new Node;

initNode(head,10);
display(head);

addNode(head,20);
display(head);

addNode(head,30);
display(head);

addNode(head,35);
display(head);

addNode(head,40);
display(head);

insertFront(&head,5);
display(head);

int numDel = 5;
Node *ptrDelete = searchNode(head,numDel);
if(deleteNode(&head,ptrDelete))
cout << "Node "<< numDel << " deleted!\n";
display(head);

cout << "The list is reversed\n";
reverse(&head);
display(head);

cout << "The list is copied\n";
copyLinkedList(head,&newHead);
display(newHead);

cout << "Comparing the two lists...\n";
cout << "Are the two lists same?\n";
if(compareLinkedList(head,newHead))
cout << "Yes, they are same!\n";
else
cout << "No, they are different!\n";
cout << endl;

numDel = 35;
ptrDelete = searchNode(newHead,numDel);
if(deleteNode(&newHead,ptrDelete)) {
cout << "Node "<< numDel << " deleted!\n";
cout << "The new list after the delete is\n";
display(newHead);
}
cout << "Comparing the two lists again...\n";
cout << "Are the two lists same?\n";
if(compareLinkedList(head,newHead))
cout << "Yes, they are same!\n";
else
cout << "No, they are different!\n";

cout << endl;
cout << "Deleting the copied list\n";
deleteLinkedList(&newHead);
display(newHead);
return 0;
}

Senin, 31 Oktober 2011

Program Pointer


Contoh program pointer

#include <iostream>  
using namespace std;

enum Type {
INT,
FLOAT,
STRING,
};

void Display(void *pVoid, Type eType) {
switch (eType) {
case INT:
cout << *(int*)pVoid << endl;
break;
case FLOAT:
cout << *(float*)pVoid << endl;
break;
case STRING:
cout << (char*)pVoid << endl;
break;
}
}

int main()
{
int a = 10;
float b = 987.654;
char *c =
"Art is a lie that makes us realize the truth.";
Display(&a, INT);
Display(&b, FLOAT);
Display(c, STRING);
return 0;
}

Source code program C menghitung nilai kombinasi Dan Permutasi

Berikut ini merupakan source code bahasa C untuk membuat program penghitung nilai dari kombinasi bilangan

# include <stdio.h>
long int faktorial (unsigned int n)
{
if(n==1||n==0)
return 1;
else
return n*faktorial (n-1);
}
int main()
{
int a,b;
long int hasil;
printf("\t Menghitung Rumus Kombinasi\n\n");
printf("Masukkan nilai a = ");

scanf("%d",&a);
printf("Masukkan nilai b = ");
scanf("%d",&b);
hasil = faktorial(a)/faktorial(b)*faktorial(a-b);
printf ("%d!=%d\n",a,faktorial(a));
printf ("%d!=%d\n",b,faktorial(b));
printf ("%d-%d!=%d\n",a,b,faktorial(a-b));
printf("%d C %d = %d\n\n",a,b,hasil);
return 0;
}





Source code program C menghitung nilai Permutasi
Berikut ini merupakan source code bahasa C untuk membuat program penghitung nilai dari permutasi bilangan
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int x,y,m,n,z=0,nilai=1;
system(“color d”);
puts(“\t\t=========================================================”);
puts(“\n\t\t =============== \2\4 PROGRAM PERMUTASI \4\2 ===============”);
puts(“\n\t\t=========================================================”);
printf(“\n\nmasukkan banyak angka yang akan di cari permutasinya : “, x);
scanf(“%d”,&x);
system(“color b”);
puts(“\n===========================”);
printf(“Hasil Permutasinya”);
puts(“\n===========================”);
for(n=0;n<x;n++)
{
n=nilai*x;
nilai=n;
}
int p[x];
for(y=0;y<x;y++)
p[y]=1;
for(y=0;y<nilai;y++)
{
for(m=0;m<x;m++)
printf(“%d  “,p[m]);
p[x-1]++;
printf(“\n”);
for(m=x-1;m>0;m–)
{
if(p[m]>x)
{
p[m]=1;
p[m-1]++;
}
}
}
puts(“\n===========================”);
getch();
}

Selasa, 11 Oktober 2011

Contoh Program Antrian


Source Code C++:
#include <iostream.h>
#include <conio.h>

int main()
{
    int cek=0, data[20], x, hapus;
    char pil;
    do {
           
           cout<<"1. Tambah Antrian"<<endl;
           cout<<"2. Hapus Antrian"<<endl;
           cout<<"3. Lihat Antrian"<<endl;
           cout<<"4. Keluar"<<endl;
         cout<<endl;
           cout<<"Silahkan masukkan pilihan anda = ";
            pil=getche();
         cout<<endl;
if(pil!='1' && pil !='2' && pil !='3' && pil!='4' )
          cout<<"Andasalah mengetikkan inputan";
            else
            {
               if(pil=='1')   //PUSH
               {
                   if(cek==20)
                       cout<<"Antrian Penuh";
                   else
                   {
                   cout<<"Masukkan nilai = ";
              cin>>x;
                       data[cek]=x;
                       cek++;
                   }
               }
               else
               {
                   if(pil=='2')     //POP
                   {
                       if(cek==0)
                           cout<<"Antrian kosong";
                       else
                       {
                           hapus=data[0];
                           for(int v=0;v<cek;v++)
                               data[v]=data[v+1];
                           data[cek-1]=NULL;
                           cek--;
                      cout<<"Data dengan nilai "<<hapus<<"terhapus";
                       }
                       getch();
                   }
                   else
                   {
                       if(pil=='3')   //CEK DATA
                       {
                           if(cek==0)     
                               cout<<"Antrian Kosong";

                           else
                           {
                               cout<<endl;
                               for(int z=0;z<cek;z++)
                               {
                                   cout<<" | ";
                                   cout<<" "<<data[z];
                                   cout<<" | ";
                               }

                           }
                           getch();
                           return 0;
                       }
                   }
               }
            }

    }while(pil!='4');
}

Selasa, 04 Oktober 2011

Bapepam minta perusahaan asuransi perluas pasar

Seperti yang telah dilakukan oleh adira asuransi kendaraan terbaik Indonesia yang telah melakukan perluasan pangsa pasat. Badan Pengawas Pasar Modal dan Lembaga Keuangan (Bapepam-LK) menilai, perusahaan asuransi belum menjangkau masyarakat menengah ke bawah. Padahal, Kepala Bapepam-LK Nurhaida bilang, perluasan pasar ini merupakan bagian rencana induk pasar modal dan industri keuangan non bank tahun 2010-2014.

Nurhaida mnilai, saat ini baru kalangan menengah ke atas yang tersentuh asuransi. "Regulator berharap industri asuransi menciptakan produk untuk pihak-pihak yang punya pendapatan menengah ke bawah," kata Nurhaida di hadapan pelaku industri asuransi di Jakarta, Jumat (16/9).

Nurhaida juga meminta industri asuransi memperluas jaringannya di luar Jawa. "Asuransi jangan terkonsentrasi di Jakarta," ujarnya. Daerah luar Jawa, menurut Nurhaida, juga punya potensi cukup bagus.

Direktur Eksekutif Asosiasi Asuransi Jiwa Indonesia (AAJI) Benny Waworuntu sependapat dengan Nurhaida. "Masyarakat bawah justru paling stabil. Mereka adalah captive market," ujarnya.

Begitu pula dengan potensi daerah luar Jawa. Berdasarkan pengalaman Benny sebelumnya sebagai Wakil Presiden Direktur dan Chief Agency Officer PT Asuransi Jiwa Manulife Indonesia, banyak polis besar terjual di sana.

Hanya saja, lanjut Benny, produk asuransi saat ini sebagian besar berupa unit link yang lebih mengarah ke investasi. "Masyarakat bawah belum berpikir ke arah sana," kata Benny.

Produk yang tepat untuk kelas ini menurutnya adalah asuransi jiwa whole life yang pembayarannya bisa dilakukan per tahun sehingga preminya bisa lebih murah.

Cara ini sudah dilakukan oleh perusahaan asuransi lokal. Di tengah banyaknya investor asing yang meminati industri asuransi di Indonesia, menurut Benny, perusahaan lokal bisa mengambil ceruk pasar yang belum digarap maksimal.

Upaya lain adalah lebih gencar sosialisasi. Sebab, dia mengatakan, masyarakat masih lebih familiar dengan produk perbankan ketimbang asuransi. "Untungnya kami terbantu bancassurance," kata Benny.

AAJI juga berencana menambah agen berlisensi, dari 220.000 saat ini menjadi 500.000 sampai akhir tahun.

Berdasarkan catatan AAJI, saat ini pemegang polis asuransi jiwa tercatat baru 7% dari seluruh penduduk Indonesia. "Kalau bisa 20% saja sudah bagus sekali," pungkas Benny.

Kamis, 07 Juli 2011

Mempercepat Koneksi Tekomflash

Kalo koneksi intetnet kamu pakai telkomflash, pasti ngerasa kesel banget kan kalo quotanya dah abis buat download pasti lolanya gak ketulungan, untuk download file 4MB aja harus nunggu 15menit bau selesai padahal itu juga dah pake IDM yang membuat koneksi buat browsingnya jadi lambat, nah disini ane coba kasih trik yang mungkin bisa berguna bagi agan agan sekalian trik ini ane kutip dari kaskus forum favorit ane, dah gak usah basa basi lagi langsung ikuti triknya gan

# siapin tool buat loncatin kodok nya (mdma dan dan reconnect dial ---> cari sendiri di google ya) >> trik yg masih ampuh sampe saat ini buat sedot bandwith si kampredd...!!(kampredd=telkomflash)

# pada mdma set gprs/edge only terlebih dahulu..

# dial si kampret dr reconnect dial..ini di gunakan untuk jaga2 disco ya gan...

# setelah konek cek ip client nya,,kalo ane seh demen sama kepala 182 pada paket ini

# selanjut nya buka broser agan,, lalu masuk link speedtest,,, misalnya http://speedtest.indosatm2.com/ atau link2 lain yg menyediakan speedtest bandwith kita....

# silahkan mulai speedtest dengan klik start pada link td

# untuk mendapatkan bandwith yg kenceng,,,koneksi agan sampe disini harus tetep gprs/edge only..

# begitu hasil angka PING keluar pada speedtest td,,,skrng agan pindah kan koneksi nya pada 3G only pada aplikasi mdma nya...