#include
#include
#include

#define _MY_DEBUG
#if defined(_MY_DEBUG)
    #define TRACE_LINE printf("\n1. Line : %d\n2. File : %s\n",__LINE__,__FILE__);
#else
    #define TRACE_LINE
#endif
#define MAX 30

int SequentSearch(int*, int, int, int*, int*);
void InputData(int*, int), FreeBuffer(int*, int*);

int main(int argc, char *argv[]) {
    system("COLOR 3");
    int max;
    puts("Sequential Search");
    printf("Input a number : ");
    scanf("%d",&max);
    fflush(stdin);
    if((max > 0) && (max <= MAX)) {
        int key, sum = 0,
        *buffer = (int*)calloc(max,sizeof(int)),
        *pos    = (int*)calloc(max,sizeof(int));
        InputData(buffer,max);
        printf("\nInput a Key : ");
        scanf("%d",&key);
        fflush(stdin);
        puts("\nResult :");
        if(SequentSearch(buffer,max,key,pos,&sum)) {
            int i = 0;
            printf("1. Sum of Data     : %d\n",sum);
            printf("2. Position        : ");
            while((pos[i]) && (i < sum)) {
                printf("%d ",pos[i++]); 



            }
            printf("\n");
        } else {
            printf("Data %d not Available in Buffer!\n",key);
        }
        FreeBuffer(buffer,pos);
    }
    TRACE_LINE;
    getch();
    return(EXIT_SUCCESS);
}

int SequentSearch(int* buffer, int max, int key, int* pos, int* sum) {
    int i = 0, find = 0;
    for(i = 0; i < max; ++i) {
        find = key == buffer[i];
        if(find) {
            pos[(*sum)++] = i+1;
        }
    }
    if(*sum > 0) {
        find = 1;
    }
    return(find);
}

void InputData(int* buffer, int max) {
    int i;
    for(i = 0; i < max; ++i) {
        printf("%d. Input Data : ",(i+1));
        scanf("%d",&buffer[i]);
        fflush(stdin);
    }
}

void FreeBuffer(int* buffer, int* pos) {
    free(buffer);
    free(pos);
    buffer = pos = NULL;
}

[/quote]


Metode pencarian diatas menggunakan algoritma Sequential Searching, dimana proses pencarian dilakukan dengan melakukan perulangan sebanyak jumlah data dalam array, kemudian jika data yang dicari sama dengan data array dengan index ke-i, maka fungsi akan mengembalikan nilai 1 dan nilai 0 jika data yang dicari tidak ditemukan, dimana 1 merepresentasikan bahwa data yang dicari ditemukan sedangkan nilai 0 merepresentasikan bahwa data yang dicari tidak ditemukan, selain itu juga fungsi pencarian akan memanipulasi nilai variabel pointer sum dan array pos, dimana sum menyatakan sebagai jumlah data yang ditemukan dan pos menyatakan pada posisi keberapa saja data yang dicari tersebut ditemukan, semoga bisa membantu.

source code from : EcHo dot or dot id
edit post

Comments

1 Response to 'Algoritma Random Data'

  1. Anonim
    http://hendricool.blogspot.com/2010/12/algoritma-random-data.html?showComment=1353685155930#c4999263584485224460'> 23 November 2012 pukul 22.39

    Judul artikel sama isi artikelnya ga konsisten..
    Judulnya Algoritma Random, tp listing program di bawahnya tentang algoritma Sequential Searching..

     

My Pictures