01/10/2018, 00:36

Tạo từ điển từ File văn bản bằng danh sách liên kết

Tạo từ điển: Có một menu làm các công việc sau:

  1. Khởi tạo từ điển TD từ file TD.DAT:
    Đọc file TD.DAT là văn bản (file này đã chứa sẵn các từ có tối đa là 7 ký tự). Mỗi từ chỉ có các ký tự trong tập [‘A’…’Z’].
    Các từ trong file đã được sắp xếp theo thứ tự ABC) và lưu các từ này vào một mảng các danh sách móc nối. Cụ thể:
    Nut * TD[26]; //lưu 26 danh sách tương ứng chữ cái[‘A’…‘Z’]
    Trong đó, kiểu Nut được khai báo như sau:
    Struct Nut
    {
    char Tu[7];
    Nut *Tiep;
    }
    Ví dụ: File TD.DAT có 3 từ: ANH, BAN, BONG.
    TD[0]: ANH
    TD[1]: BAN -> BONG

    Còn TD[2],..., TD[25]  đều là NULL.
    
    • Lưu ý: Nếu file này chưa có thì cho các phần tử của mảng đều là NULL.
  2. Liệt kê tất cả các từ trong TD:
    Gõ vào ký tự, sau đó hiển thị tất cả các từ có ký tự đầu là ký tự được gõ vào.

  3. Bổ sung một từ:
    Từ bàn phím gõ vào một từ. Nếu từ đó chưa có trong TD thì bổ sung nó vào TD, còn ngược lại thì thông báo: “Từ này đã có trong TD”.

  4. Xoá một từ:
    Từ bàn phím gõ vào một từ. Nếu từ đó có trong TD thì xoá khỏi TD, còn ngược lại thì thông báo: “Không có từ này trong TD”.

  5. Cập nhật từ điển từ một file văn bản:
    Đọc một file văn bản bất kỳ, trong đó có chứa các từ (một từ được quy định là các ký tự liên tiếp trong tập [‘A’… ‘Z’]) các ký tự
    còn lại đều coi là dấu phân cách). Cứ mỗi từ đọc được trong file văn bản này hãy thực hiện công việc sau: Nếu từ đó không tìm
    thấy trong TD thì chèn nó vào vị trí thích hợp.

  6. Lưu TD vào file TD.DAT.

Viet96 viết 02:37 ngày 01/10/2018

Không hiểu sao code của em chạy ra sai kết quả , anh chị nào biết giúp em cái

DEMO CODE :

#include <fstream>
#include<iostream>
#include<string.h>
using namespace std;

struct Nut{
	char Tu[7];
	Nut *Tiep;
};
Nut *TD[26];

/*void HamDocFile(ifstream &FileIn, string &sName , int a[100] , int &n)//ifstream la mo phai che do doc
{
	//mo file 
	FileIn.open(sName ,ios::in);//in de doc
	//kiem tra file 
	if (FileIn.fail())
	{
		cout<<"\nKhong tim thay file !"<<endl;
		system("pause");
		exit(0);
	}
	int i= 0 ;
		//doc file
		while(!FileIn.eof())//xem thu den cuoi file chua
		{
			FileIn>> a[i];
			i++;
			n= i;<< // de biet kich thuoc mang
		}
		//dong file
		FileIn.close();
		return;
} */
void  BoSungDau(Nut *&TD , char KyTu )
{
	Nut *p = new Nut;
int n;
	cout<<"\nNhap n : ";
	cin>>n;
	for ( int i = 0 ; i < n ; i ++)
	{
		cout<<"TD["<<i<<"]="<<strcpy(p->Tu,KyTu);
		p->Tiep = TD;
		TD = p;
	}
}
void HienThi(Nut *TD)
{
	Nut * q = TD;
	while(q!= NULL)
	{
		cout<<q->Tu<<endl;
		q = q->Tiep;
	}
}
void DocFile()
{
	int n;
	ifstream data;
	char  KyTu[6];
	data.open("td.dat.txt");
	if (data.is_open())
	{
		while(!data.eof())//xem thu den cuoi file chua
		{
			data>>KyTu;
			BoSungDau(TD,KyTu);
		}
		HienThi(TD);
			
	}
	data.close();
	

}



int main()
{
	
	int chon;	
	do{
		cout<<"\n_______MENU_______"<<endl;
		cout<<"\n0.Thoat\n1.Khoi tao\n2.Liet ke \n3.Bo sung\n4.Xoa "<<endl;
		cout<<"\nMoi ban nhap   , bam 0 de thoat  "<<endl; 
		cin>>chon;
		switch(chon)
		{
			case 0 : break;
			case 1 : 
				
			DocFile();
			
			break;
			
			
			case 2 :   break;
			case 3 :  break;
		}
	}while (chon);
	system("pause");
	return 0;
}
Bài liên quan
0