Kamis, 10 Desember 2009

#include
#include
#include
#include

typedef struct CabBank *AdrCabBank;
typedef struct Nasabah *AdrNasabah;
typedef struct Transaksi *AdrTransaksi;
typedef struct CabBank{
    char Nama[10];
    AdrCabBank next;
    AdrNasabah FirstN;
    };
typedef struct Nasabah{
    char no_rek[9];
    char nama[25];
    long saldo;
    AdrNasabah next;
    AdrTransaksi FirstT;
    };
typedef struct Transaksi{
    int  kode;
    long jml;
    char date[11];
    long jmlsld;
    AdrTransaksi next;};
AdrCabBank FirstB;
char pil,pil2,pil3;


void createbank();
void createTrans();
int IsEmtyB();
void searchB(char nmcab[10],AdrCabBank *AdrB);
void searchN(char noN[9],AdrCabBank AdrB,AdrNasabah *AdrN);
void searchNB(char noN[9],AdrCabBank AdrB,AdrNasabah *AdrN);
void insertB(char NmB[10]);
void insertN(char noN[9],char nmN[25],AdrCabBank AdrB);
void deletN(AdrNasabah AdrN, AdrCabBank AdrBank);
void Menabung(char tanggal[11],long Jml,AdrNasabah AdrN);
void Mengambil(char tanggal[11],long Jml,AdrNasabah AdrN);
void Transfer(char tanggal[11],long Jml,AdrNasabah AdrN,AdrNasabah AdrNT);
void Display(AdrCabBank AdrB);
void DisplayT(AdrNasabah AdrN);
void menu();
void menuu();
void menuD();
#include "file.h"

void createbank()
{
FirstB=NULL;
FirstB->FirstN=NULL;
FirstB->next=NULL;
}

void createTrans()
{
AdrNasabah P;
P=FirstB->FirstN;
P->FirstT=NULL;
}

int IsEmtyB()
{
int found;
found=0;
if (FirstB==NULL)
     found=0;
    else
     found=1;
return(found);
}

void searchB(char nmcab[10],AdrCabBank *AdrB)
{
   AdrCabBank P;
   int Found=0;
       P=FirstB;
       while((P!=NULL) && (!Found)){
       if (strcmp(P->Nama,nmcab)==0)
          Found=1;
       else
          P=P->next;}
    if (Found)
    *AdrB=P;
    else
    *AdrB=NULL;
}

void searchN(char noN[9],AdrCabBank AdrB,AdrNasabah *AdrN)
{
    AdrNasabah P;
    P=AdrB->FirstN;
       while((P!=NULL)&&(strcmp(P->no_rek,noN)!=0))
       {P=P->next;}
       if (strcmp(P->no_rek,noN)==0)
       *AdrN=P;
       else
       *AdrN=NULL;
}

void searchNB(char noN[9],AdrCabBank AdrB,AdrNasabah *AdrN)
{
    AdrCabBank P; AdrNasabah Q;
    int Found=0;
    P=FirstB;
    Found=0;
    while (P!=NULL && Found==0){
    Q=AdrB->FirstN;
       while((Q!=NULL)&&(strcmp(Q->no_rek,noN)!=0))
       {Q=Q->next;}
       if (strcmp(Q->no_rek,noN)==0){
       *AdrN=Q;
       Found=1;
       }
       else{
        *AdrN=NULL;      
       }
    P=P->next;
    }
}

void insertB(char NmB[10])
{

    AdrCabBank P,Q;
    Q=FirstB;
    P=(struct CabBank*)malloc(sizeof(struct CabBank));
    strcpy(P->Nama,NmB);
    P->next=NULL;
    P->FirstN=NULL;
        if (FirstB==NULL)
            FirstB=P;
        else{
            while(Q->next!=NULL){Q=Q->next;}
                Q->next=P;
            }
}

void insertN(char noN[9],char nmN[25],AdrCabBank AdrB)
{

    AdrNasabah P,Q;
    Q=AdrB->FirstN;
    P=(struct Nasabah*)malloc(sizeof(struct Nasabah));
    strcpy(P->nama,nmN);
    strcpy(P->no_rek,noN);
    P->FirstT=NULL;
    P->saldo=0;
    P->next=NULL;
        if (AdrB->FirstN==NULL)
            AdrB->FirstN=P;
        else{
            while(Q->next!=NULL)
            {
            Q=Q->next;
            }
        Q->next=P; }
}

void deletN(AdrNasabah AdrN, AdrCabBank AdrBank)
{
    AdrNasabah Q;
    if (AdrN==AdrBank->FirstN)
    {
        AdrBank->FirstN=AdrN->next;
    }
    else if (AdrN->next==NULL)
    {
         Q=AdrBank->FirstN;
         while (Q->next!=AdrN)
         {
             Q=Q->next;
        }
        Q->next=NULL;
    }
    else
    {
        Q=AdrBank->FirstN;
         while (Q->next!=AdrN)
         {
             Q=Q->next;
        }
        Q->next=AdrN->next;
    }
    free(AdrN);
}



void Menabung(char tanggal[11],long Jml,AdrNasabah AdrN)
{
    AdrTransaksi T,P;
    char kd;
    T=(struct Transaksi*)malloc(sizeof(struct Transaksi));
    strcpy(T->date,tanggal);
    T->kode=1;
    T->jml=Jml;
    T->next=NULL;
    AdrN->saldo=AdrN->saldo +Jml;
    P=AdrN->FirstT;
        if (AdrN->FirstT==NULL)
            AdrN->FirstT =T;
        else{
            while((P!=NULL)&&(P->next!=NULL))
                {
                P=P->next;
                }   
        P->next=T;
        }
   
}

void Mengambil(char tanggal[11],long Jml,AdrNasabah AdrN)
{
    AdrTransaksi T,P;
    char kd;
    T=(struct Transaksi*)malloc(sizeof(struct Transaksi));
    strcpy(T->date,tanggal);
    T->kode=2;
    T->jml=Jml;
    if (Jml>AdrN->saldo)
    {
        printf(" Saldo tidak mencukupi\n");
    }

    else
    {
    AdrN->saldo=AdrN->saldo -Jml;
    T->next=NULL;
    P=AdrN->FirstT;
        if (AdrN->FirstT==NULL)
            AdrN->FirstT =T;
        else{
            while((P!=NULL)&&(P->next!=NULL))
            {
                P=P->next;
            }
            P->next=T;
            }
    }
   
}

void Transfer(char tanggal[11],long Jml,AdrNasabah AdrN,AdrNasabah AdrNT)
{
    if (Jml<0)
    {
        printf("jumlah transfer tidak boleh negatif");
    }

    else{
   
    if (Jml>AdrN->saldo)
    {
        printf("saldo tidak mencukupi");
    }
    else
    {
    Mengambil(tanggal,Jml,AdrN);
    Menabung(tanggal,Jml,AdrNT);
    printf("Anda melakukan transfer sbb: \n");
    printf("Rekening asal : %s \n",AdrN->no_rek);
    printf("Rekening tujuan : %s \n",AdrNT->no_rek);
    printf("Nominal uang  : %ld \n",Jml);
    printf("Saldo anda tinggal : %ld \n",AdrN->saldo);
    }
    }
}

void Display(AdrCabBank AdrB)
{
    AdrNasabah P;
    P=AdrB->FirstN;
    if(AdrB->FirstN==NULL)
        printf("Data nasabah tak ada\n");
    else{
        printf("No.Rekening\tNama Nasabah\t\tSaldo\n");
            while(P!=NULL)
                {
                printf("%s\t\t%s\t\t%ld\n",P->no_rek,P->nama,P->saldo);
                P=P->next;
                }
        }
getch();
}

void DisplayT(AdrNasabah AdrN)
{
    AdrTransaksi P;
    P=AdrN->FirstT;
    if(AdrN->FirstT==NULL)
        printf("Data transaksi masih kosong\n");
    else{
        printf("Data transaksi nasabah no rek %s \n",AdrN->no_rek);
        printf("Kode Transaksi\tTanggal\t\Jumlah\n");
            while(P)
                {
                printf("%d\t\t%s\t\t%            ld\n",P->kode,P->date,P->jml);
                P=P->next;
                }
        }
getch();
}

void menu()
{
     clrscr();
     printf("  BANK SEDERHANA \n");
     printf("------------------- \n");
     printf("1. BUKA CABANG \n");
     printf("2. BUKA REKENING \n");
     printf("3. MENUTUP REKENING \n");
     printf("4. MELAKUKAN TRANSAKSI \n");
     printf("5. DISPLAY NASABAH \n");
     printf("6. EXIT \n");
     printf("Pilihan(1-6): \n ");
     printf("PILIHAN: ");
     scanf("%c",&pil);
 }

void menuu()
{
       clrscr();
       printf("TRANSAKSI \n");
       printf("1. Menabung \n");
       printf("2. Mengambil Uang \n");
       printf("3. Transfer \n");
       printf("4. Menu utama \n");
       printf("PILIHAN: ");
       scanf("%c",&pil2);
}

void menuD()
{
        clrscr();
        printf("     DISPLAY \n");
        printf("----------------\n");
        printf("1. Display Nasabah\n ");
        printf("2. Display Transaksi nasabah\n");
        printf("3. Menu Utama \n");
        printf("PILIHAN: ");
        scanf("%c",&pil3);
}

penggabungan ADT, struct, array, function

#include "file.c"

void main()
{
char NmBank[10],NmBankT[10],Date[11],NoRek[9],NoRekT[9],NmNasabah[25];
int jmlcab,i;
long Jml=0;
AdrCabBank AdrBank;
AdrNasabah AdrNsbh,AdrNsbhT;
AdrTransaksi AdrTran;

do{
 menu();
 switch (pil){
 case '1':clrscr();
         printf(" Membuka Cabang \n");
         printf("----------------- \n");
         printf(" Nama Cabang \t  : ");
         scanf("%s", &NmBank);
         searchB(NmBank,&AdrBank);
         if (AdrBank==NULL)
             insertB(NmBank);
          else
           {
            printf("maaf nama cabang sudah terdaftar");
         getch();}
         break;
       

 case '2':clrscr();
         printf(" Membuka Rekening \n");
         printf("----------------- \n");
         printf(" Nama bank \t  : ");
         scanf("%s", &NmBank);
         searchB(NmBank,&AdrBank);
         if (AdrBank==NULL)
         printf("maaf bank tidak ditemukan");
          else
           {
        printf(" No.Rekening \t: ");
        scanf("%s", &NoRek);
        searchN(NoRek,AdrBank,&AdrNsbh);
        if (AdrNsbh==NULL){
         printf(" Nama Nasabah \t  : ");
         scanf("%s", &NmNasabah);
         insertN(NoRek,NmNasabah,AdrBank);
         }
         else printf("maaf no rekening telah digunakan");
         }
         getch();
      break;

 case '3':clrscr();
         printf("Menutup Rekening \n");
         printf("--------------- \n");
         printf(" Nama bank \t  : ");
         scanf("%s", &NmBank);
         searchB(NmBank,&AdrBank);
         if (AdrBank==NULL) printf("maaf bank tidak ditemukan");
          else{
           printf(" No.Rekening \t: ");
           scanf("%s", &NoRek);
           searchN(NoRek,AdrBank,&AdrNsbh);
           if (AdrNsbh==NULL) printf("Nasabah tidak ditemukan");
           else
           {
               strcpy(NoRek,AdrNsbh->no_rek);
           deletN(AdrNsbh,AdrBank);
           printf("\n Nasabah dengan no rekening %s telah dihapus", NoRek);
           }
          
           }getch();
      break;

 case '4':clrscr();
      printf("     LOGIN    \n");
      printf("---------------- \n");
      printf(" Nama bank \t  : ");
      scanf("%s", &NmBank);
      searchB(NmBank,&AdrBank);
      if (AdrBank==NULL) printf("maaf bank tidak ditemukan");
       else{
      printf(" No.Rekening \t: ");
      scanf("%s", &NoRek);
      searchN(NoRek,AdrBank,&AdrNsbh);
      if (AdrNsbh==NULL) printf("Nasabah tidak ditemukan");
           else{
         do{
      menuu();
      switch(pil2)
        {
         case '1': clrscr();
               printf(" Mari Menabung\n");
               printf("-----------------\n");
               printf("\n Tanggal transaksi : ");
               scanf("%s", &Date);
               printf("\n Nominal uang : ");
               scanf("%ld",&Jml);
               if (Jml<0) printf("maaf nominal uang tidak boleh negatif \n");
               else{
               Menabung(Date,Jml,AdrNsbh);
               printf("\n saldo anda skrg %ld ",AdrNsbh->saldo);
               getch();}
               break;
         case '2': clrscr();
               printf(" Mari Mengambil uang \n");
               printf("-----------------\n");
               printf("\n Tanggal transaksi : ");
               scanf("%s", &Date);
               printf("\n Nominal uang : ");
               scanf("%ld",&Jml);
               Mengambil(Date,Jml,AdrNsbh);
               printf("\n saldo anda skrg %ld ",AdrNsbh->saldo);
               getch();
               break;
         case '3': clrscr();
               printf("\n Tanggal transaksi : ");
               scanf("%s", &Date);
               printf(" Cabang bank \t: ");
               scanf("%s", &NmBank);
               searchB(NmBank,&AdrBank);
               if (AdrBank==NULL) printf("Cab Bank tujuan tidak ditemukan");
            else{
             printf(" Rekening tujuan \t: ");
             scanf("%s" , &NoRekT);
             searchN(NoRekT,AdrBank,&AdrNsbhT);
              if (AdrNsbh==NULL) printf("Rekening tujuan tidak ditemukan");
               else{
                printf("\n Nominal uang : ");
                scanf("%ld",&Jml);
                Transfer(Date,Jml,AdrNsbh,AdrNsbhT);}
               }

               getch();
               break;
         case '4': clrscr();
               menu();
               getch();
               break;
        
         }}
         while(pil2!='4');}
         }getch();
         break;

 case '5':clrscr();
      printf("     DISPLAY \n");
      printf("---------------- \n");
      printf(" Cabang bank \t: ");
      scanf("%s", &NmBank);
      searchB(NmBank,&AdrBank);
      if (AdrBank==NULL)
      printf("Cab Bank tersebut tidak ditemukan");
       else{
        do{
        menuD();
        switch(pil3){
        case '1' : clrscr();
               Display(AdrBank);
               getch();
               break;
        case '2' : clrscr();
               printf(" No.Rekening \t: ");
               scanf("%s", &NoRek);
               searchN(NoRek,AdrBank,&AdrNsbh);
               if (AdrNsbh==NULL) printf("Nasabah tidak ditemukan");
               else{
               DisplayT(AdrNsbh);}
               getch();
               break;
        case '3' : clrscr();
               menu();
               break;
        }}

        while(pil3!='3');
        }getch();
        break;
 case '6':exit(0);

}

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


tgs algoritma lanjut
kelas IT/C
1. M. Nouval fallah ( 208.511.101)
2. Dwi Novitarini ( 208.511.117)

Kamis, 12 November 2009

algoritma perkalian matriks

31.jpg

Rabu, 21 Oktober 2009

Algoritma

Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.
Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.

[sunting] Sejarah istilah "algoritma"

Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 "Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan.

[sunting] Jenis-jenis Algoritma

Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.