Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Viết Chương trình từ­ Điển dùng Bảng Băm (mọi người giúp mình với nha)

  1. #1
    Ngày gia nhập
    05 2009
    Bài viết
    2

    Wink Viết Chương trình từ­ Điển dùng Bảng Băm (mọi người giúp mình với nha)

    Để dễ làm,mình chia từ điển ra nhiều phần!
    Phần : Nhập từ điển vào và xuất ra từ điển vừa nhập.
    Đây là code của mình, mình viết được như vầy thôi,--->lỗi quá trời!
    với lại còn nhiều chổ chưa hiểu về Băm, các bạn ai biết chỉ cho mình với nha!
    //Nhap tu vao tu dien va xuat ra man hinh
    #include<iostream.h>
    #include<conio.h>
    #include<stdio.h>
    #define M 26
    struct tu{
    char key[10];
    char nghia[20];
    };
    struct node{
    tu data;
    node*next;
    };
    typedef struct node* pnode;

    // Bam
    int bam(tu x) Ngay chổ này không hiểu về băm kí tự--->
    {
    return x%65;
    }
    //Nhap mot tu x vao ds lien ket don
    void nhaptuvaods(pnode &H, tu x)
    {
    pnode p;
    p=new node;
    p->data=x;
    p->next=H;
    H=p;
    }
    // Nhap mot tu x vao bang bam
    void nhapvaobam(pnode*a,tu x)
    {
    tu k;
    k=hash(x);
    nhaptuvaods(a[k],x);
    }
    void nhap_1_tu(tu x)
    { cout<<"Nhap vao tu Tieng Anh: ";
    gets(tu.key);
    cout<<"Nhap vao nghia Tieng Viet: ";
    gets(tu.nghia);
    }
    void xuat_1_tu(tu x)
    {
    cout<<"Tu: ";
    puts(tu.key);
    cout<<"Nghia: ";
    puts(tu.nghia);
    }
    void nhaptudien(pnode *A,int n)
    {
    tu x;
    int k;
    cout<<"Nhap vao so tu can nhap: ";
    cin>>n;
    for(int i=0;i<n;i++)
    {
    cout<<"Nhap vao tu thu "<< i+1<<":";
    nhap_1_tu(x);
    k=bam(x.key[0]);
    nhapvaobam(A[k],x);
    }
    }
    // Xuat Danh sach
    void xuatds(pnode h)
    {
    pnode p;
    p=h;
    if(p==NULL)
    cout<<"Khong co tu";
    else
    while(p!=NULL)
    {
    cout<<p->data<<"-->";
    p=p->next;
    }
    cout<<"NULL";
    }
    //Xuat ra cac tu trong Bang Bam
    void xuattudien(pnode *A)
    {
    cout<<"===Cac Tu Trong BANG BAM===";
    for(int i=0;i<M;i++)
    {
    if(A[i]!=NULL)
    {
    cout<<i<<": ";
    xuatds(A[i]);
    }
    }
    }
    int main()
    {
    pnode A[M];
    int n;
    cout<<"=====Chuong trinh nhap xuat Tu Dien======\n";
    cout<<"Nhap tu vao tu dien\n";
    nhaptudien(A,n);
    cout<<"Xuat cac tu co trong tu dien\n ";
    xuattudien(A);
    getch();
    return 0;
    }
    Bạn nào biết giúp mình vó­i nha !

  2. #2
    Ngày gia nhập
    05 2009
    Bài viết
    2

    Thumbs down Đây là bài băm kí tự!

    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    #include <string.h>
    #include <alloc.h>
    #define SIZE 100
    struct node
    {
    char info;
    struct node * next;
    };

    typedef struct node *NODEPTR;
    // cac ham danh cho danh sach lien ket
    char hash(char k)
    {
    return k%SIZE;
    }

    int Empty (NODEPTR &First)
    {
    return (First == NULL ? 1: 0);
    }
    NODEPTR Search (NODEPTR &First, char x)
    {
    NODEPTR p;

    p = First;
    while (p != NULL && p->info != x)
    {
    p = p->next;
    }
    return(p);
    }

    void Insert_First (NODEPTR &First, char x)
    {
    NODEPTR p;

    p = new node;

    p->info = x;
    p->next = First;
    First = p;

    }

    void Traverse (NODEPTR &First)
    {
    NODEPTR p;

    p = First;

    if (p == NULL)
    cout << "List is empty!\n";
    else
    while (p != NULL)
    {
    cout << p->info <<" -> ";
    p = p->next;
    }
    cout <<" NULL";
    }

    int Delete_Note(NODEPTR &First, char x)
    {
    int Result;
    NODEPTR p,q;
    p = First;
    while (p != NULL && p->info != x)
    {
    q=p;
    p = p->next;
    }
    if (p!=NULL)
    {
    if (p == First)
    {
    First = First->next;
    delete p;
    }
    else
    {
    q->next=p->next;
    delete p;
    }
    Result =1;
    }
    else
    Result = 0;

    return Result;
    }
    // cac ham danh cho dua vao vi tri bang bam
    void Insert_Bam(NODEPTR *a,char x)
    {
    char k;

    k=hash(x);

    Insert_First (a[k],x);
    }
    void Travese_Bam(NODEPTR *a)
    {
    cout << "\n======= [ BANG BAM ]======= \n";
    cout << "vi tri | Link \n";
    for (int i=0; i<SIZE; i++)
    {
    if(a[i] !=NULL)
    {
    cout << " " << i << " : ";
    Traverse(a[i]);
    cout <<"\n - - - - - - - - \n";
    }

    }
    cout <<"\n===========================\n";

    }
    NODEPTR Search_Bam(NODEPTR *a, char x)
    {
    char k;
    k = hash(x);
    NODEPTR M = NULL;
    if (a[k] !=NULL)
    M = Search(a[k],x);
    return M;


    }
    int Delete_Bam(NODEPTR *a, char x)
    {
    char k,Result;
    k= hash(x);

    if(a[k]!=NULL)
    {
    if(Delete_Note(a[k],x) ==1)
    Result =1;
    else
    Result=0;
    }
    else
    Result=0;
    return Result;

    }

    int main()
    {
    NODEPTR a[SIZE];
    NODEPTR M;
    int i, n;
    char x;

    for(i=0;i<SIZE;i++)
    a[i] = NULL;
    cout<<"Nhap vao so phan tu: ";
    cin>>n;
    for(i=0;i<n;i++)
    {
    Travese_Bam(a);
    cout << " nhap vao ki tu : " << i<<": ";
    cin>>x;
    Insert_Bam(a,x);

    }
    Travese_Bam(a);
    cout << " \n nhap ki tu can tim : ";
    cin >>x;
    M=Search_Bam(a,x);
    if(M!=NULL)
    {
    cout << "da tim thay ki tu ";
    cout <<M->info;
    }
    else
    cout << " khong co ki tu nay";
    getch();
    Travese_Bam(a);
    cout << " \n nhap so can xoa: ";
    cin >>x;
    int Result = Delete_Bam(a,x);

    Travese_Bam(a);

    if(Result==1)
    cout << " da xoa xong ki tu " << x;
    else
    cout << " khong co ki tu " <<x;
    getch();
    return 0;
    }
    Mấy Bác Tham khảo chơi!

  3. #3
    Ngày gia nhập
    09 2009
    Bài viết
    9

    Mặc định chao ban hoai nam 11211

    Bai cua bạn có ý tương nhưng khi chạy nó không dùng được mà chạy mãi ...

Các đề tài tương tự

  1. Từ điển đơn giản sử dụng bảng băm viết bằng C++
    Gửi bởi Emerald214 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 18-11-2016, 07:42 PM
  2. Code C đề tài Từ điển đơn giản sử dụng bảng băm viết bằng C
    Gửi bởi hoatxitin trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 21-05-2013, 12:40 AM
  3. Làm sao kết hợp bảng băm và cây AVL để viết từ điển
    Gửi bởi kidqn trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 2
    Bài viết cuối: 06-08-2010, 07:15 PM
  4. từ điển = bảng băm bị lỗi. Giúp mình sửa lỗi?
    Gửi bởi archwest trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 25-05-2010, 10:50 PM
  5. Cài Đặt Từ Điển Dùng Bảng Băm trên C, giúp mình sửa lỗi!
    Gửi bởi dinhcoich trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 10-05-2009, 04:02 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn