giúp đỡ em về C

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi Hoang_Nguyen, 12/9/06.

  1. Hoang_Nguyen

    Hoang_Nguyen Youtube Master Race

    Tham gia ngày:
    1/6/06
    Bài viết:
    90
    em có đoạn chương trình sau:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #define TRUE 0
    #define FALSE -1
    #define NULLKEY-1
    #define M 100

    //khai bao cau truc mot nut cua bang bam
    struct node
    {
    int key; //khoa cua nut tren bang bam
    };

    //Khai bao bang bam co M nut
    struct node hashtable[M];
    int N;
    /*bien toan cuc chi so nut hien co tren bang bam*/

    //ham bam
    int hashfunc(int key)
    {
    return(key %M);
    }

    //khoi dong bang bam
    void initialize()
    {
    int i;
    for(i=0;i<M;i++)
    hashtable.key=NULLKEY;
    N=0; //so nut hien co khoi dong bang 0
    }

    //tac vu empty:kiem tra ba bang bam co ranh khong
    int empty()
    {
    return(N==0?TRUE:FALSE);
    }
    //tac vu full:kiem tra bang bam da day chua
    int full()
    {
    return(N==M-1?TRUE:FALSE);
    }
    /*----------------------------------------------------------------------------------------------------------------------------------------
    tac vu search:tim kiem nut co khoa k tren bang bam,neu khong tim thay ham nay tra ve vi tri M,neu tim thay ham nay tra ve dia chi tim thay
    ----------------------------------------------------------------------------------------------------------------------------------------*/
    int search(int k)
    {
    int i;
    i=hashfunc(k);
    while(hashtable.key!=k&&hashtable.key
    !=NULLKEY)
    {
    //bam lai(theo phuong phap do tim tuyen tinh):hi(key)=h(key)+i)%M)
    i=i+1;
    if(i>=M)
    i=i-M;
    }
    if(hashtable.key==k) //tim thay
    return(i);
    else //khong tim thay
    return(M);
    }
    //tac vu insert:them nut co khoa k vao bang bam
    int insert(int k)
    {
    int i,j;
    if(full())
    {
    printf("\nbang bam bi da,khong them nut co khoa %d duoc",k);
    return(M);
    }
    i=hashfunc(k);
    while(hashtable.key!=NULLKEY)
    {
    //bam lai (theo phuong phap do tuyen tinh)
    i++;
    if(i>=M)
    i=i-M;
    }
    hashtable.key=k;
    N=N-1;
    return(i);
    }

    //tac vu remove:xoa nut tai dia chi i tran bang bam
    void remove(int i)
    {
    int j,r,cont,a;
    cont=TRUE;
    do
    {
    hashtable.key=NULLKEY;
    j=i;
    do
    {
    i=i+1;
    if(i>=M)
    i=i-M;
    if(hashtable.key==NULLKEY)
    cont=FALSE;
    else
    {
    r=hashfunc(hashtable.key);
    a=(j<r&&r<=i)||(r<=i&&i<j)||(i<j&&j<r);
    }
    }
    while(cont&&a);
    if(cont)
    hashtable[j].key=hashtable.key;
    }while(cont);
    }
    //tac vu viewtable:xem chi tiet bang bam
    void viewtable()
    {
    int i;
    for(i=0;i<M;i++)
    printf("\ntable[%2s]:%4d",i,hashtable.key);
    }
    //chuong trinh chinh
    main()
    {
    int i,n,p,q;
    int b,key,chucnang;
    char c;
    clrscr();
    //khoi tao bang bam
    initialize();
    do
    {
    //menu chinh cua chuong trinh
    printf("\n\nchuc nang cua chuong trinh:\n");

    printf("1:them nut moi vao bang bam\n");
    printf("2:tham ngau nhien nhieu nut vao bang bam\n");
    printf("3:xoa nut tren bang bam\n");
    printf("4:xoa toan bo bang bam\n");
    printf("5:xem chi tiet bang bam\n");
    printf("6:tim kiem tren bang bam\n");
    printf("0:ket thuc chuong trinh\n");
    printf("\nchuc nang ban chon:");
    scanf("%d",&chucnang);
    switch(chucnang)
    {
    case 1:
    {
    printf("\nTHEM NUT VAO BANG BAM");
    printf("\nkhoa cua nut moi:");
    scanf("%d",&key);
    break;
    }
    case 2:
    {
    printf("\nTHEM NGAU NHIEN NHIEU NUT VAO BANG BAM");
    printf("\ban muon them bao nhieu nut:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    key=random(1000);
    insert(key);
    }
    break;
    }
    case 3:
    {
    printf("\nxoa nut tren bang bam");
    printf("\nkhoa cua nut can xoa");
    scanf("%d",&key);
    i=search(key);
    if(i==M)
    printf("\nkhong co nut voi khoa can xoa");
    else
    {
    remove(i);
    N--;
    }
    break;
    }
    case 4:
    {
    printf("\nxoa toan bo bang bam");
    printf("nban co chac khong(c/k):");
    c=getch();
    if(c=='c'||c=='c')
    initialize();
    break;
    }
    case 5:
    {
    printf("\nxem chi tiet bang bam");
    viewtable();
    break;
    }
    case 6:
    {
    printf("\ntim kiem tren bang bam");
    printf("\nkhoa can tim:");
    if(search(key)==M)
    printf("\n khong thay");
    else
    printf("\ntim thay dia chi %d trong bang bam",search(key));
    break;
    }
    }
    scanf("%d",&key);
    }
    while(chucnang!=0);
    return(0);
    }

    em vẫn chưa tìm đc ý tưởng nào để thiết kế 1 cái giao diện nào ngon ngon cho chương trình này cả.bác nào giỏi về đồ họa trong C trợ giúp em cái::(
     
  2. bullno1

    bullno1 Mr & Ms Pac-Man

    Tham gia ngày:
    22/4/06
    Bài viết:
    221
    ?? Cái này toàn hash table chứ có dính đc tí gui nào đâu mà giao diện gì hả bạn?
    Hình như nó có công cụ tạo form mà,cứ kéo kéo thả thả vào là đc.Xong rồi viết code cho event.
     
  3. red_strike

    red_strike C O N T R A

    Tham gia ngày:
    13/10/04
    Bài viết:
    1,722
    Nơi ở:
    Onikage Clone :)
    Như bác bullno1 nói thì mình dùng Visual C++ để soạn thảo hay sao mà có thể dùng GUI vậy?

    Đang dùng Borland C++ thấy nó cũng tàn quá rùi +_+ !
     
  4. Hoang_Nguyen

    Hoang_Nguyen Youtube Master Race

    Tham gia ngày:
    1/6/06
    Bài viết:
    90
    em định làm giao diện cho cái đấy mà.có thể dùng nó cho 1 chương trình nào đấy.chỉ cần mình kích vào nút trên giao diện đấy thì máy sẽ tự chạy chứ ko cần phải đánh vào nữa
     
  5. Brianlam

    Brianlam T.E.T.Я.I.S

    Tham gia ngày:
    14/7/04
    Bài viết:
    526
    Thế tui nghĩ là bạn nên chuyển hướng sang C# , bạn viết code như thế thì bạn này cho 1 chương trình nào đấy là chương trình nào ?:D , vả lại , theo tui thấy thì cái này giống kiểu lập trình console hơn là window bạn à .
     
  6. sakico2003

    sakico2003 Youtube Master Race

    Tham gia ngày:
    25/7/06
    Bài viết:
    23
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
     
  7. LinhMoi22

    LinhMoi22 The Warrior of Light

    Tham gia ngày:
    6/7/05
    Bài viết:
    2,085
    Nơi ở:
    hellcity
    tui đang học cách lập trình .NET Il của thằng C++ quả nhiên thông dụng và tiện ích :D có thể thích hôp với các ngôn ngữ khác
     
  8. Hoang_Nguyen

    Hoang_Nguyen Youtube Master Race

    Tham gia ngày:
    1/6/06
    Bài viết:
    90
    tui muốn dựa vào chương trình trên để quản lý điểm của sv hay cái j đó.nên mới cần giao diện
     

Chia sẻ trang này