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

Đề tài: Code tìm kiếm trong cây nhị phân trong C++. Lỗi chỉ tìm được từ đầu tiên trong file thôi sửa thế nào?

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

    Mặc định Code tìm kiếm trong cây nhị phân trong C++. Lỗi chỉ tìm được từ đầu tiên trong file thôi sửa thế nào?

    các bro giúp mình với, khi mình tìm từ thì chỉ tìm được từ đầu tiên trong file thôi, còn mấy từ khác tìm kô được.

    C++ Code:
    1. #include <iostream>
    2. #include <string.h>
    3. #include <fstream>
    4. #include <stdio.h>
    5. #include <conio.h>
    6. #define  MAX_WORD 15
    7. #define  MAX_MEANING 100
    8. using namespace std;
    9.  
    10. typedef struct tagDICTIONARY_NODE
    11. {
    12.     char    Word[MAX_WORD];
    13.     char    Meaning[MAX_MEANING];  
    14.     tagDICTIONARY_NODE *pLeft;
    15.     tagDICTIONARY_NODE *pRight;
    16. } DICTIONARY_NODE;
    17.  
    18. typedef struct DICTIONARY_TREE
    19. {
    20.     int nCount;
    21.     DICTIONARY_NODE *pRoot;
    22. } DICTIONARY_TREE;
    23.  
    24. void DictionaryCreate (DICTIONARY_TREE &t)
    25. {
    26.     t.nCount = 0;
    27.     t.pRoot = NULL;
    28. }
    29.  
    30. int DictionaryIsEmpty (const DICTIONARY_TREE &t)
    31. {
    32.     if (t.pRoot==NULL) return 1;
    33.         return 0;
    34. }
    35.  
    36. DICTIONARY_NODE* DictionarySearch (DICTIONARY_NODE *&pCurr, char keyword[])
    37. {
    38.     if (pCurr==NULL)
    39.         return NULL;
    40.     if (strcmp(pCurr->Word, keyword)==0)
    41.         return pCurr;
    42.     else
    43.         if (pCurr->Word>keyword)
    44.             return DictionarySearch (pCurr->pLeft, keyword);
    45.         else
    46.             return DictionarySearch (pCurr->pRight, keyword);
    47. }
    48.  
    49. DICTIONARY_NODE * SearchStandFor (DICTIONARY_NODE *&p, DICTIONARY_NODE *pCurr)
    50. {
    51.     if (p->pRight != NULL)  
    52.         return SearchStandFor (p->pRight, pCurr);
    53.     strcmp (pCurr->Word, p->Word);
    54.     DICTIONARY_NODE *pTemp = p;
    55.     p = p->pLeft;
    56.         return  pTemp;
    57. }
    58.  
    59. int DictionaryInsert (DICTIONARY_NODE *&pCurr, char newword[], char meaning[])
    60. {
    61.     if (pCurr==NULL)
    62.     {
    63.         pCurr = new DICTIONARY_NODE;
    64.         strcpy(pCurr->Word, newword);
    65.         strcpy(pCurr->Meaning,meaning);
    66.         pCurr->pLeft = pCurr->pRight=NULL;
    67.             return 1;
    68.     }
    69.     if (strcmp(pCurr->Word, newword)>0)
    70.         return DictionaryInsert (pCurr->pLeft, newword, meaning);
    71.     else
    72.         if (strcmp(pCurr->Word, newword)<0)
    73.             return DictionaryInsert (pCurr->pRight, newword, meaning);
    74.         else return 0;
    75. }
    76.  
    77. void Delete (DICTIONARY_NODE *&pCurr)
    78. {
    79.     DICTIONARY_NODE  *pTemp = pCurr;
    80.     if (pCurr->pRight==NULL)
    81.         pCurr = pCurr->pLeft;
    82.     else
    83.         if (pCurr->pLeft==NULL)
    84.             pCurr = pCurr->pRight;
    85.         else
    86.             pTemp = SearchStandFor (pCurr->pLeft, pCurr);
    87.     delete pTemp;
    88. }
    89.  
    90. int DictionaryDelete (DICTIONARY_NODE *&pCurr, char delword[])
    91. {
    92.     if (pCurr==NULL) return 0;
    93.     if (strcmp(pCurr->Word, delword)>0)
    94.         return DictionaryDelete (pCurr->pLeft, delword);
    95.     else
    96.         if (strcmp(pCurr->Word, delword)<0)
    97.             return DictionaryDelete (pCurr->pRight, delword);
    98.     Delete (pCurr);
    99.         return 1;
    100. }
    101.  
    102. int HeightOfTree (DICTIONARY_NODE *pRoot)
    103. {
    104.    int h1, h2;
    105.    if (pRoot==NULL)
    106.        return 0;
    107.       h1=HeightOfTree ((pRoot)->pLeft);
    108.       h2=HeightOfTree (pRoot->pRight);
    109.   if (h1>h2) return 1+h1;
    110.      else
    111.          return 1+h2;
    112. }
    113.  
    114. void BuildDictionary (DICTIONARY_TREE &DT)
    115. {
    116.     fstream f("tudien.txt");
    117.     char keyword[MAX_WORD];
    118.     char meaning[MAX_MEANING];
    119.    
    120.     while (!f.eof())
    121.     {
    122.         f>>keyword;
    123.         f.getline (meaning, MAX_MEANING);
    124.         DictionaryInsert (DT.pRoot, keyword, meaning);
    125.     }
    126. }
    127.  
    128. void main ( )
    129. {
    130.     DICTIONARY_TREE DT;
    131.     DICTIONARY_NODE* A;
    132.     int choice;
    133.     cout<<"     o0o---Chuong Trinh Tra Cuu Tu Dien Anh-Viet---o0o"<<endl<<endl;
    134.     do
    135.     {
    136.         cout<<"<MENU>"<<endl<<endl;
    137.         cout<<"1.  Tao cay tu dien A-V"<<endl;
    138.         cout<<"2.  Tim nghia mot tu"<<endl;
    139.         cout<<"3.  Them mot tu moi vao cay tu dien"<<endl;
    140.         cout<<"4.  Xoa mot tu khoi cay tu dien"<<endl;
    141.         cout<<"5.  Dem so tu trong cay tu dien"<<endl;
    142.         cout<<"6.  Tinh chieu cao cua cay tu dien"<<endl;
    143.         cout<<"7.  In cay tu dien tai vi tri cua mot tu"<<endl;
    144.         cout<<"8.  Thong tin ve chuong trinh"<<endl;
    145.         cout<<"9.  Ket thuc chuong trinh"<<endl;
    146.         cout<<endl<<"Ban hay chon mot chuc nang, sau do bam Enter: ";
    147.         cin>>choice;
    148.         cout<<"-------------------------------------------------------------------------------"<<endl;
    149.         switch (choice)
    150.         {
    151.         case 1:
    152.             DictionaryCreate (DT);
    153.             BuildDictionary (DT);
    154.             cout<<"Qua trinh nap du lieu thanh cong!\a \a \a"<<endl;
    155.             cout<<"-------------------------------------------------------------------------------"<<endl;
    156.                 break;
    157.         case 2:
    158.             char keyword[MAX_WORD];
    159.             cout<<"Ban hay nhap vao tu can tim: ";
    160.             cin>>keyword;
    161.             A=DictionarySearch (DT.pRoot, keyword);
    162.             if (A==NULL)
    163.                 cout<<endl<<"Khong tim thay tu  "<<keyword<<"  trong tu dien!"<<endl<<"-------------------------------------------------------------------------------"<<endl;
    164.             else
    165.                 cout<<endl<<A->Word<<": "<<A->Meaning<<endl<<"-------------------------------------------------------------------------------"<<endl;
    166.                 break;
    167.         case 3:
    168.             char addword[MAX_WORD];
    169.             char addmeaning[MAX_MEANING];
    170.             cout<<"Ban hay nhap tu can them: ";
    171.             cin>>addword;
    172.             cout<<"Ban hay nhap nghia cua tu: ";
    173.             cin.ignore ();
    174.             cin.getline (addmeaning, MAX_MEANING);
    175.             DictionaryInsert (DT.pRoot, addword, addmeaning);
    176.             cout<<"Tu moi da duoc them!";
    177.             cout<<"-------------------------------------------------------------------------------"<<endl;
    178.                 break;
    179.         case 4:
    180.             char delword[MAX_WORD];
    181.             cout<<"Ban hay nhap tu can xoa: ";
    182.             cin>>delword;
    183.             if (DictionarySearch (DT.pRoot, delword))
    184.                 DictionaryDelete (DT.pRoot, delword);
    185.             cout<<"Tu da duoc xoa!";
    186.             cout<<"-------------------------------------------------------------------------------"<<endl;
    187.                 break;
    188.         case 6:
    189.             {
    190.             int Height=0;
    191.             Height=HeightOfTree (DT.pRoot);
    192.             cout<<"Chieu cao cua cay tu dien la: "<<Height<<endl<<"-------------------------------------------------------------------------------"<<endl;
    193.                 break;
    194.             }
    195.         }
    196.     } while (choice!=9);   
    197.     getch();
    198. }
    -----------------------
    Đây là nội dung trong file tudien.txt của mình. Nó chỉ tìm được từ apple thôi, còn mấy từ khác thì không tìm được.

    apple (n) trai tao
    blue (n) mau xanh duong
    book (n) sach (v) dat cho truoc
    boy (n) con trai
    computer (n) may vi tinh
    girl (n) con gai
    go (v) di
    internet (n) mang Internet
    laptop (n) may vi tinh xach tay
    light (n) anh sang, anh den (adj) nhe, nhe nhang, nhat
    man (n) nguoi, con nguoi, dan ong
    orange (n) trai cam
    red (n) mau do
    rose (n) hoa hong
    run (v) chay
    yellow (n) mau vang
    Đã được chỉnh sửa lần cuối bởi elvish : 27-03-2010 lúc 05:30 PM.

  2. #2
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    Hic.Cấu trúc lưu trữ trên cây nhị phân chưa tốt lắm.Cái bài từ điển làm bằng cây nhị phân này tui cũng làm rồi ,cấu trúc lưu trữ khác mấy you tí xíu:
    -Đây là file demo(bị lỗi phần nhập thêm từ mới->lí do hồi trước chạy đúng rồi ,tự nhiên ngồi sửa -->thành ra lỗi -->chán bỏ không làm nữa-->giờ đang code lại bài này-->nâng cấp giao diên DOS)
    -Khi chạy lần đầu tiên nhớ nhập đường dẫn tới file Resourcefirst.dll mình đính kèm trong đó nha VD:E:\\HOCTAP\\Resourcefirst.dll
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi tauit_dnmd : 11-04-2010 lúc 09:58 PM.

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

  1. Xây dựng chức năng tìm kiếm ưu tiên kết quả như google trong C#?
    Gửi bởi trungak0902 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 13-04-2012, 10:10 PM
  2. ADO.NET Viết code cho nút tìm kiếm giống nhu trong từ điển Lạc Việt như thế nào?
    Gửi bởi anhchinhne trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 12-11-2011, 11:21 AM
  3. tìm kiếm trong file xml trên C# như thế nào
    Gửi bởi thanh06 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 19-11-2010, 10:56 PM
  4. Tìm kiếm trong File TXT như thế nào?
    Gửi bởi daovthinh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 14
    Bài viết cuối: 16-11-2010, 10:24 PM
  5. Tìm kiếm như thế nào khi số phần tử rất lớn trong file
    Gửi bởi nguyentuan2 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 13-12-2007, 05:53 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