Kamis, 28 Februari 2013

flochart dan program

inilah adalah contoh sederhana struktur data dengan menggunakan  flochart berikut dengan programnya....

(epenta brahmana)

1.      Modul         : I (Satu)
2.      Materi : Array
3.      Judul           : Matriks
4.      Masalah     : Buatlah  Program  untuk  membaca  dua  buah matriks Amxn dan matrisk Bkxl  kemudian menghitung perjumlahan dan pengurangan kedua matriks serta mengalikan kedua matriks. Perhatikan bahwa dua buah matriks dapat dijumlahkan dan dikurangkan jika mempunyai ordo sama (m=k dan n=l) dan dua buah matriks dapat dikalikan jika kolom matriks pertama sama dengan baris matriks kedua (n=k).
5.      Deskripsi Masalah :


1.      Listing Program :

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

int main ()
{
int m1[100][100],m2[100][100],m3[100][100],baris,kolom,a,b,c,d;
   cout<<"\n\t\t\t<< Penjumlahan Matriks >>";
   cout<<"\n\n\tMasukkan jumlah baris : "; cin>>baris;
   cout<<"\n\n\tMasukkan jumlah kolom : "; cin>>kolom;

//menginput matrik1
   cout<<"\n\n>>>  Matriks 1";
   for(a=0;a<baris;a++){
      cout<<"\n\t";
       for(b=0;b<kolom;b++){
      cout<<"\nMasukkan data indeks  "<<a+1<<","<<b+1<<"  ="; cin>>m1[a][b];
       }
   }
   cout<<endl;

//menginput matrik2
   cout<<"\n\n>>>  Matriks 2";
   for(c=0;c<baris;c++){
      cout<<"\n\t";
       for(d=0;d<kolom;d++){
          cout<<"\nMasukkan data indeks  = "<<c+1<<","<<d+1<<"  ="; cin>>m2[c][d];
       }
   }
cout<<endl;


//menampilkan matrik1
   cout<<"\n\n>>>  Matriks 1\n\n";
   for(a=0;a<baris;a++){
     cout<<"\n\t";
       for(b=0;b<kolom;b++){
          cout<<m1[a][b];
       }
   }
   cout<<"\n\n";

//menampilkan matrik2
   cout<<"\n\n>>>  Matriks 2\n\n";
   for(c=0;c<baris;c++){
      cout<<"\n\t";
       for(d=0;d<kolom;d++){
          cout<<m2[c][d];
       }
   }
   cout<<endl;

//untuk menghitung penjumlahan
    cout<<"\n\n >>>> Hasil Penjumlahan Kedua Matriks <<<< \n\n";
   for(a=0;a<baris;a++){
      cout<<"\n\t";
       for(b=0;b<kolom;b++){
          m3[a][b]=m1[a][b]+m2[a][b];
         cout<<m3[a][b];
       }
   }

   //untuk menghitung pengirim
    cout<<"\n\n >>>> Hasil Pengurangan Kedua Matriks <<<< \n\n";
   for(a=0;a<baris;a++){
      cout<<"\n\t";
       for(b=0;b<kolom;b++){
          m3[a][b]=m1[a][b]-m2[a][b];
         cout<<m3[a][b];
       }
   }
getch();
return 0;
}


2.      Hasil :

1.      Modul      : I I (Dua)
2.      Materi      : Structure
3.      Judul        : Biodata
4.      Masalah   : Deklarasikan suatu structure BIODATA dengan field-field NIM (char[10]), Nama (char[20]), Alamat (TINGGAL), Tgl_Lahir (TANGGAL) dan IP (float). Structure TINGGAL terdiri dari field-field Jalan (char[15]), Kota (char[10]), Kode_Pos (char[5]) dan structure TANGGAL terdiri dari field-field Tgl (int), Bln (int) dan Thn(int). Buatlah  Program  untuk membaca beberapa (N) mahasiswa kemudian cetak dalam suatu tabel
5.      Deskripsi Masalah :

1.      Listing Program :

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

struct alamat
{char alamat[50], kota[40],kodepos[5];};

struct data_tgl
{ int tgl,bln,thn;};                  

struct teman
{ char nama[20];
char j_kel[1];
float IPK;

struct data_tgl tgl;
struct alamat alamat;};

struct teman info;
main()
{
clrscr();
//input data
cout<<"Masukkan nama anda  = ";cin>>info.nama;
cout<<"Jenis kelamin anda  = ";cin>>info.j_kel;
cout<<"Tanggal lahir anda  = ";cin>>info.tgl.tgl;
cout<<"Bulan lahir anda    = ";cin>>info.tgl.bln;
cout<<"Tahun lahir anda    = ";cin>>info.tgl.thn;
cout<<"Alamat asal         = ";cin>>info.alamat.alamat;
cout<<"Kota Asal           = ";cin>>info.alamat.kota;
cout<<"Kode Pos            = ";cin>>info.alamat.kodepos;
cout<<"IPK Terakhir        = ";cin>>info.IPK;
cout<<"";
cout<<"_________________________________________________\n";
cout<<"";
//output data
cout<<"\nNama                : "<<info.nama;
cout<<"\nJenis Kelamin       : "<<info.j_kel;
cout<<"\nTanggal lahir       : "<<info.tgl.tgl<<"-"<<info.tgl.bln
<<"-"<<info.tgl.thn;
cout<<"\nAlamat              : "<<info.alamat.alamat<<"---"<<info.alamat.kota
<<"---"<<info.alamat.kodepos;
cout<<"\nIPK Terakhir        : "<<info.IPK;
cout<<"\n_______________________________________________";


getch();
}
8.Hasil

1.      Modul      : IV (Empat)
2.      Materi      : Stack
3.      Judul        : Evaluasi Ekspresi
Masalah   : Buatlah  program  untuk  membaca  sebuah ekspresi dalam notasi Postfiks atau Prefiks yang valid, kemudian dengan menggunakan konsep Stack evaluasilah ekspresi tersebut.
4.      Deskripsi Masalah :
5.      Flowchart/Algoritma :
6.      Listing Program :
7.      Hasil :
#include<iostream.h>
#include<conio.h>
#include<math.h>
#define MAX 30
#define OPERAND 10
#define OPERATOR 20
typedef struct preexp
{
int top;
int stack[MAX];
}
stck;

void init(stck*);
void push(stck*,int);
void evaluasi(stck*,char,int,int);
int pop (stck*);
int gettype(char);

void main()
{
char pre[MAX];
int num1,num2,item,l,i,pr;
stck stk;

clrscr();
init(&stk);
cout<<"Masukkan Notasi Prefiks        :" ;cin>>pre;
l=strlen(pre);
for(i=l-1;i>=0;i--)
{
if(pre[i]==' ' || pre[i]=='\0')
continue;
switch(gettype(pre[i]))
{
case OPERAND : item=pre[i]-'0';
push(&stk,item);
break;
case OPERATOR : num1=pop(&stk);
num2=pop(&stk);
evaluasi(&stk,pre[i],num1,num2);
}
}
cout<<"\nHasil Evaluasinya adalah    :"<<( "%d",stk.stack[0]);
getch();
}

void init(stck *st )
{
st->top=-1;
}
void push(stck *st,int num)
{
st->top++;
st->stack[st->top]=num;
}
int pop(stck *st)
{
int num;
num=st->stack[st->top];
st->top--;
return num;
}
void evaluasi(stck *st,char op,int num1,int num2)
{
int hasil;
switch(op)
{
case '+': hasil=num1+num2;
break;
case '-': hasil=num1-num2;
break;
case '*': hasil=num1*num2;
break;
case '/': hasil=num1/num2;
break;
case '%': hasil=num1%num2;
break;
case '$': hasil=pow(num1,num2);
break;
}
push(st,hasil);
}
int gettype(char c)
{
switch(c)
{
case '+':
case '-':
case '*':
case '/':
case '$':
case '%': return OPERATOR;
default : return OPERAND;
}
};

2.Materi          :Queue
3.Judul            : Menu Queue
Masalah   : Buatlah program untuk melakukan operasi Insert dan Delete elemen pada suatu Queue dalam sistem menu. Pilihan menu terdiri dari Insert Elemen, Hapus Elemen Cetak Elemen dan Keluar.
4.Deskripsi Masalah :
5.Flowchart/Algoritma :
6.Listing Program :
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
typedef struct node *simpul;
struct node
                {
   char Isi;
   simpul next;
   };
   //==Prototipe function
   void Sisip_Belakang(simpul &L, char elemen);
   void Hapus_Depan (simpul &L);
   void Cetak (simpul L);

//==Function menu yang akan diubah menjadi menu
main()
{
                char huruf, Lagi;
   simpul L = NULL ; //Pastikan Bahwa L Kosong
   int i;
   cout<<"Operasi pada single list=="<<endl<<endl;
   //sisip belakang
   cout<<"\nPenyisipan simpul \n\n";
   for (i=1;i<=3;i++)
   {

   //MENU SISIP

   int Pil;
 do  //BERULANG ULANG PAKAI DO *
   {
   do
   {
                clrscr();
      cout<<"Menu Queue  ++";
      cout<<"\n1. Sisip Simpul belakang";
      cout<<"\n2. Hapus Simpul depan";
      cout<<"\n3. Cetak Simpul";
      cout<<"\n4. Keluar";
      cout<<"\n\nMasukkan Pilihan Anda [1-4]   :";
      cin>>Pil;
      }while (Pil<1 || Pil >3);
      switch (Pil)
      {
      case 1 : cout<<"Masukkan Huruf :";
                                    cin>>huruf;
               Sisip_Belakang (L, huruf);
                                    break;
      case 2 : Hapus_Depan(L);
                                    cout<<"Elemen yang dihapus adalah = ";
               break;
      case 3 : Cetak(L);
                                    break;
      }cout<<"Memilih Lagi [Y/T]";cin>>Lagi;
      }while (Lagi=='Y' || Lagi=='y');               //PASANGAN DO HARUS DIIKUTKAN DENGAN WHILE *
      getch();
   }

       }



   //fungsi sisip simpul di belakang
   void Sisip_Belakang(simpul &L, char elemen)
   {
                simpul bantu, baru;
      baru = (simpul) malloc (sizeof(simpul));
      baru->Isi = elemen;
      baru->next = NULL;
      if (L == NULL)
                L=baru;
      else
                {
         bantu=L;
         while (bantu->next != NULL)
                                    bantu=bantu->next;
         bantu->next=baru;
         }
      }
      //fungsi mencetak isi linked list
      void Cetak (simpul L)
      {
                simpul bantu;
         if(L==NULL)
                cout<<"^_^ Linked List Kosong ^_^\n";
         else
                {
            bantu=L;
            cout<<"\nIsi Linked List";
            while (bantu->next !=NULL)
            {
                cout<<bantu->Isi<<"-->";
               bantu=bantu->next;
               }
            cout<<bantu->Isi;
            }
         }

      //fungsi Hapus simpul depan depan
      void Hapus_Depan (simpul &L)
      {
                simpul Hapus;
         if (L==NULL)
                cout<<"Linked List Kosong........";
            else
            {
                Hapus = L;
               L = L->next;
               Hapus->next = NULL;
               free (Hapus);
            }
      }


      //========================^_^====================




1.      Hasil :
 

1.Modul        : VI (Enam)
2.Materi        : Singly Linked List
3.Judul          : Simpul Terurut
Masalah   : Buatlah program  untuk  membentuk / menciptakan  suatu  singly  list,  dimana simpul harus selalu terurut setiap kali menyisipkan sekalipun nilai atau elemen simpul dibaca secara acak.
4.Deskripsi Masalah :
5.Flowchart/Algoritma :
6.Listing Program : #include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define true 1
#define false 0
typedef struct node *simpul;
struct node
                                                        {
            char Isi;
            simpul next;
            };


//======================
//==PROTOTYPE FUNCTION==
//======================
void Sisip_Depan(simpul &L,char elemen);
void Sisip_Belakang(simpul &L,char elemen);
void Sisip_Tengah1(simpul &L,char elemen1, char elemen2);
void Sisip_Tengah2(simpul &L,char elemen1, char elemen2);
void Hapus_Depan(simpul &L);
void Hapus_Belakang(simpul &L);
void Hapus_Tengah(simpul &L,char elemen);
void Cetak(simpul L);


//=====================
//====FUNCTION MAIN====
//=====================
main()
{
        char huruf, huruf2;
   simpul L=NULL;                                      // Pastikan Bahwa L Kosong
   int i;
   cout<<"==OPERASI PADA SINGLE LINKED LIST=="<<endl<<endl;


   //===============
   //==SISIP DEPAN==
   //===============
   cout<<"Penyisipan Simpul Di Depan"<<endl<<endl;
        cout<<"Masukkan Huruf :"; cin>>huruf;
      Sisip_Depan(L,huruf);
      cout<<"Masukkan Huruf :"; cin>>huruf;
      Sisip_Depan(L,huruf);
      cout<<"Masukkan Huruf :"; cin>>huruf;
      Sisip_Depan(L,huruf);
   Cetak(L);


    //=================
   //==SISIP BELAKANG==
   //==================
   cout<<endl<<endl<<"Penyisipan Simpul Dibelakang "<<endl<<endl;
        cout<<"Masukkan Huruf :"; cin>>huruf;
   Sisip_Belakang(L,huruf);
   cout<<"Masukkan Huruf :"; cin>>huruf;
   Sisip_Belakang(L,huruf);
   cout<<"Masukkan Huruf :"; cin>>huruf;
   Sisip_Belakang(L,huruf);

   Cetak(L);


    //=======================================
   //==SISIP SIMPUL SETELAH SIMPUL TERTENTU==
   //========================================
   cout<<endl<<endl<<"Masukkan Huruf                      :"; cin>>huruf;
   cout<<"Disisip Setelah Huruf :"; cin>>huruf2;
   cout<<huruf<<"Disisip Setelah "<<huruf2<<endl;
   Sisip_Tengah1(L, huruf, huruf2);
   Cetak(L);


   //========================================
   //==SISIP SIMPUL SEBELUM SIMPUL TERTENTU==
   //========================================
   cout<<endl<<endl<<"Masukkan Huruf                      :"; cin>>huruf;
   cout<<"Disisip Sebelum Huruf :"; cin>>huruf2;
   cout<<huruf<<"Disisip Sebelum "<<huruf2<<endl;
   Sisip_Tengah2(L, huruf, huruf2);
   Cetak(L);


   //=========================
   //==HAPUS SIMPUL DEPAN=====
   //=========================
        cout<<endl<<endl<<"Setelah Hapus Simpul Depan "<<endl;
   Hapus_Depan(L);
   Cetak(L);


   //=========================
   //==HAPUS SIMPUL Belakang==
   //=========================
        cout<<endl<<endl<<"Setelah Hapus Simpul Belakang "<<endl;
   Hapus_Belakang(L);
   Cetak(L);


   //=========================
   //==HAPUS SIMPUL TENGAH====
   //=========================
        cout<<endl<<endl<<"Masukkan Huruf Tengah Yang Akan Dihapus :";
   cin>>huruf;
   Hapus_Tengah(L, huruf);
   Cetak(L);
   getch();
}


//*************************************
//***FUNCTION SISIP SIMPUL DI DEPAN****
//*************************************
void Sisip_Depan(simpul &L, char elemen)
{
        simpul Baru; //=NEW SIMPUL;
   Baru = (simpul) malloc(sizeof(simpul));
   Baru->Isi = elemen;
   Baru->next=NULL;
   if(L == NULL)
                        L=Baru;
   else
        {
        Baru->next=L;
         L=Baru;
      }
}


//***************************************************
//***FUNCTION SISIP SIMPUL SETELAH SIMPUL TERTENTU***
//***************************************************
void Sisip_Tengah1(simpul &L,char elemen1, char elemen2)
{
        simpul bantu,Baru;
   Baru= (simpul) malloc(sizeof(simpul));
   Baru->Isi=elemen1;
   Baru->next=NULL;
   if(L==NULL)
        cout<<"List Kosong................."<<endl;
   else
        {
        bantu=L;
         while(bantu->Isi !=elemen2)bantu=bantu->next;
         Baru->next=bantu->next;
         bantu->next=Baru;
      }
}


//***************************************************
//***FUNCTION SISIP SIMPUL SEBELUM SIMPUL TERTENTU***
//***************************************************
void Sisip_Tengah2(simpul &L,char elemen1, char elemen2)
{
        simpul bantu,Baru;
   Baru= (simpul) malloc(sizeof(simpul));
   Baru->Isi=elemen1;
   Baru->next=NULL;
   if(L==NULL)
        cout<<"List Kosong................."<<endl;
   else
        {
        bantu=L;
         while(bantu->next->Isi !=elemen2)bantu=bantu->next;
         Baru->next=bantu->next;
         bantu->next=Baru;
      }
}


//***************************************
//***FUNCTION SISIP SIMPUL DI BELAKANG***
//***************************************
void Sisip_Belakang(simpul &L,char elemen)
{
        simpul bantu,Baru;
   Baru= (simpul) malloc(sizeof(simpul));
   Baru->Isi=elemen;
   Baru->next=NULL;
   if(L==NULL)
        L=Baru;
   else
        {
        bantu=L;
         while(bantu->next !=NULL);
                        bantu=bantu->next;
         bantu->next=Baru;
      }
}


//***************************************
//***FUNCTION MENCETAK ISI LINKED LIST***
//***************************************
void Cetak(simpul L)
{
        simpul bantu;
   if(L==NULL)
        cout<<"Linked List Kosong............"<<endl;
   else
        {
        bantu=L;
         cout<<"Isi Linked List :";
         while(bantu->next !=NULL)
         {
                        cout<<bantu->Isi<<"-->";
            bantu=bantu->next;
         }
         cout<<bantu->Isi;
      }
}


//*********************************
//***FUNCTION HAPUS SIMPUL DEPAN***
//*********************************
void Hapus_Depan(simpul &L)
{
        simpul hapus;
   if(L==NULL)
        cout<<"Linked List Kosong............"<<endl;
   else
        {
        hapus=L;
         L=L->next;
         hapus->next=NULL;
         free(hapus);
      }
}


//************************************
//***FUNCTION HAPUS SIMPUL BELAKANG***
//************************************
void Hapus_Belakang(simpul &L)
{
        simpul bantu, hapus;
   if(L==NULL)
        cout<<"Linked List Kosong............"<<endl;
   else
        {
        bantu=L;
         while(bantu->next->next !=NULL) bantu=bantu->next;
         hapus=bantu->next;
         bantu->next=NULL;
         free(hapus);
      }
}


//*************************************
//***FUNCTION HAPUS SIMPUL DI TENGAH***
//*************************************
void Hapus_Tengah(simpul &L,char elemen)
{
        simpul bantu, hapus;
   if(L==NULL)
        cout<<"Linked List Kosong............"<<endl;
   else
        {
        bantu=L;
         while(bantu->next->Isi !=elemen) bantu=bantu->next;
         hapus=bantu->next;
         bantu->next=bantu->next->next;
         hapus->next=NULL;
         free(hapus);
      }
}

.Modul                 : VII (Tujuh)
2.Materi               : Doubly Linked List
3.Judul                 : Angota Keluarga
Masalah   : Buatlah program  untuk  membentuk  suatu  doubly  list dimana setiap simpul menyatakan anak-anak dari suatu keluarga mulai anak paling sulung hingga anak paling bungsu. Setiap simpul berisi informasi Nama, Tempat dan Tgl_Lahir.
4.Deskripsi Masalah :

6.Listing Program :

//Contoh Program Double Linked List  anggota keluarga


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

 int pil;
 void pilih();
 void buat_baru();
 void tambah_belakang();
 void tambah_depan();
 void hapus_belakang();
 void hapus_depan();
 void tampil();


 struct simpul
 {
     char nama[30], tempat [20];
     int tgllahir;
     struct simpul *kiri, *kanan;
 } mhs, *baru, *awal=NULL, *akhir=NULL,*hapus,*bantu;

 int main()
 {
     do
     {
         clrscr();
         cout<<"MENU DOUBLE LINKEDLIST"<<endl;
         cout<<"1. Tambah Depan"<<endl;
         cout<<"2. Tambah Belakang"<<endl;
         cout<<"3. Hapus Depan"<<endl;
         cout<<"4. Hapus Belakang"<<endl;
         cout<<"5. Tampilkan"<<endl;
         cout<<"6. Selesai"<<endl;
         cout<<"Pilihan Anda : ";
         cin>>pil;
         pilih();
     } while(pil!=6);
     return 0;
 }

 void pilih()
 {
     if(pil==1)
         tambah_depan();
     else if(pil==2)
         tambah_belakang();
     else if(pil==3)
         hapus_depan();
      else if(pil==4)
         hapus_belakang();
       else if(pil==5)
         tampil();
     else
         cout<<"selesai";
 }

 void buat_baru()
 {
     baru=(simpul*)malloc(sizeof(struct simpul));
     cout<<"input Nama           : ";cin>>baru->nama;
     cout<<"input Tempat         : ";cin>>baru->tempat;
     cout<<"input Tanggal Lahir  : ";cin>>baru->tgllahir;
     baru->kiri=NULL;
     baru->kanan=NULL;
 }

 void tambah_belakang()
 {
     buat_baru();
     if(awal==NULL)
     {
         awal=baru;
         akhir=baru;
     }
     else
     {
         akhir->kanan=baru;
         baru->kiri=akhir;
         akhir=baru;
     }
     cout<<endl<<endl;
     tampil();
 }
 void tambah_depan()
 {
     buat_baru();
     if(awal==NULL)
     {
         awal=baru;
         akhir=baru;
     }
     else
     {
         baru->kanan=awal;
         awal->kiri=baru;
         awal=baru;
     }
     cout<<endl<<endl;
     tampil();
 }
 void hapus_depan()
 {
     if (awal==NULL)
         cout<<"Kosong";
     else if (awal->kanan==NULL)
     {
       hapus=awal;
       awal=NULL;
       akhir=NULL;
       free(hapus);
     }
     else
     {
         hapus=awal;
         awal=hapus->kanan;
         awal->kiri=NULL;
         free(hapus);
     }
     cout<<endl<<endl;
     tampil();
 }
 void hapus_belakang()
 {
     if (awal==NULL)
         cout<<"Kosong";
     else if (awal->kanan==NULL)
     {
       hapus=awal;
       awal=NULL;
       akhir=NULL;
       free(hapus);
     }
     else
     {
      hapus=akhir;
      akhir=hapus->kiri;
      akhir->kanan=NULL;
      free(hapus);
     }
     cout<<endl<<endl;
     tampil();
 }

 void tampil()
 {
      if (awal==NULL)
           cout<<"Kosong";
      else
      {
          bantu=awal;
          while(bantu!=NULL)
          {
             cout<<"Nama : "<<bantu->nama;
             cout<<"  Tempat : "<<bantu->tempat;
             cout<<"  Tanggal Lahir : "<<bantu->tgllahir<<endl;
             bantu=bantu->kanan;
          }
      }
      getch();
 }


1 komentar:

  1. Mantap Gan buat teman2 yang ingin liat contoh lainnya silahkan visit ke blog saya ya

    http://agantutorial.blogspot.com/2015/06/contoh-program-single-linked-list-c.html

    BalasHapus