Jumat, 24 April 2015

Program Array dengan fungsi dan Prosedur

  Salam K.Readers, Kali ini saya akan membagikan source code program dengan inputan beberapa bilangan integer, jika memasukan angka 9999 maka proses input akan berhenti dan hasil inputan yang disimpan di array akan tampil. Jika terjadi error di boolean.h coba K.Reader menambahkan "//" didepannya. Hal itu karena pre processor boolean tidak terdapat pada forder anda. Disarankan untuk membuat pre Processor boolean terlebih dahulu. Semoga bermanfaat.



//Pre Processor
#include<stdio.h>
#include<conio.h>
#include<boolean.h>

#define nMax 10
//type Bentukan
typedef struct{
        int Tab[nMax+1];
        int nEff;
        }TabInt;
//Prototype
    void CreateTabel(TabInt *T);
    void AddTabel(TabInt *T, int X);
    void CetakTabel(TabInt T);
    void InversTabel(TabInt *T);
    int getJumelm(TabInt T);
    int getSUMTabel(TabInt T);
//Main Driver
    int main(){
//Kamus global
    TabInt MyTab;
    int N;
//algoritma
    CreateTabel(&MyTab);
    printf("Masukan Bilangan    :");scanf("%d",&N);
    while(N!=9999){
        AddTabel(&MyTab,N);
        printf("Masukan Bilangan    :");scanf("%d",&N);
    }
    CetakTabel(MyTab);
    printf("\nJumlah Elemen        :%d",getJumelm(MyTab));
    printf("\nSum Elemen        :%d",getSUMTabel(MyTab));
    InversTabel(&MyTab);
    printf("\nInvers Tabel\n");
    CetakTabel(MyTab);

return 0;
}




//Realisasi prototype
    void CreateTabel(TabInt *T){
    /* I.S: T terdefinisi, belum ada nilainya
        T.S: T menjadi tabel kosong
    */
    //kamus
    //algoritma
    (*T).nEff=0;
    }

    void AddTabel(TabInt *T, int x){
    /* I.S: T terdefinisi, sembarang mungkin kosong
        T.S: T bertambah 1 elemen, jika ada tempat
    */
    //kamus
    //algoritma
        if((*T).nEff<nMax){
            (*T).nEff++;
            (*T).Tab[(*T).nEff]=x;
        }
    }

    void CetakTabel(TabInt T){
    /* I.S: T terdefinisi, sembarang tidak kosong
        T.S: T semua elemen T dicetak
    */
    //kamus
    int i;
    //algoritma
    for(i=1;i<=T.nEff;i++){
    printf("<%d>",T.Tab[i]);
        }
    }

    int getJumelm(TabInt T){
    /*mengirim jumlah elemen pada T */
    //Kamus
    int Jumelm;
    //algoritma
        Jumelm=T.nEff;
        return(Jumelm);
    }

    int getSUMTabel(TabInt T){
    /* Menjumlahkan isi elemen */
    //kamus
    int SUMTabel;
    int i;
    //Algoritma;
    SUMTabel=0;
    for(i=1;i<=T.nEff;i++){
    SUMTabel=SUMTabel+T.Tab[i];
        }
        return(SUMTabel);
    }

    void InversTabel(TabInt *T){
    /* I.S: T terdefinisi, sembarang tidak kosong
        T.S: T isi elemen T diinvers
    */
    //Kamus
    int awal,akhir;
    int i;
    int tmp;
    //algoritma
    awal=1;
    akhir=(*T).nEff;
    for(i=1;i<=(*T).nEff/2;i++){
    tmp=(*T).Tab[awal];
    (*T).Tab[awal]=(*T).Tab[akhir];
    (*T).Tab[akhir]=tmp;
        awal++;
        akhir--;
        }
    }