BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH C BÀI TẬP LỚN SỐ 2
Sinh viên thực hiện :NGUYỄN DUY HÀ Số hiệu sinh viên: 20040931 LỚP:TĐH3_K49 1.Yêu cầu đề bài Chương trình sẽ ba gồm các chức năng sau -Chương trình sẽ chạy từ dòng (command – line ),với tên file chạy là morse ;sau dấy tên của 2 file là file đầu vào và file đầu ra . -Chương trình sẽ kiểm tra dạng của file đầu vào và chuyển đổi dữ liệu sang dạng khác và gửi ra file đầu ra . -Khi kiểm tra file đầu vào ,nếu file đầu vào chỉ chứa các kí tự (.),(-),(/) và dấu cách (whitespace),thì đó là file morse ,còn lại nếu file có chứa bất kì kí tự nào khác thì đó là file text -Các từ là file text cách nhau bởi dấu cách -Các từ trong morse code thì cách nhau bởi kí tự / -File text chỉ chứa các kí tự thường (ví dụ A tương đương với a.) .File đầu ra chỉ hiển thị các kí tự thường . -Các dòng kết thúc bới dấu \n ,và các kí tự khi in ra không được tràn trên hai dòng . -Một dòng đầu vào có thể có chiều dài không giới hạn .Và mối dòng đầu vào cần được dịch ra một dòng đầu ra tương ứng . Mã lỗi Mosre code (……) ,sẽ đựoc chuyển sang kí tự (#).Nếu nó xuất hiện ở giữa một từ ,kí tự chuyển đổi (ví dụ plai#n-text).Vì thế mà mã lỗi của morse code sẽ được chuyển đổi thành kí tự bình thường ,giống các mã khác .Tuy nhiên cho file text ,kì tự sẽ hiểu là lỗi . Xử lí lỗi - Nếu một file mà không mở được thì sẽ có thông báo Error :Filename could not opened . -Nếu tên file đầu ra đã tồn tại thì chương trình sẽ hỏi xem có ghi đè lên file đó không ? Warning : file name already exists .Do you wish to overwite ? *Nếu file text có những kí tự mà không có kí tự tương đưong trong bảng morse ,thì kí tụ đó bỏ qua và thong báo sau hiện lên màn hình Error :unconigsed character C online XX . Với c là kí tự mà không hiển thị và xx là dòng mà kí tự mà không có kí tự chữ cái tương đương ,thì bạn in ra kí tự * ở file đầu ra và hiển thị trên màn hình thông báo lỗi
Error : Invalid morse code CODE online XX. Với CODE là mã morse mà bạn không dịch được . 2.Thuật giải a.Kiểm tra file đầu vào là file text hay file morse Lập 1 vòng lặp chạy từ đầu file đến cuối file ,nếu bắt gặp kí tự đồng thời các kí tự : . ; - ; space ; \n ; / thì thoát ra và kết luận đó là file text ngược lại là file morse b.Kiểm tra file đầu ra đã tồn tại hay chưa nếu chưa thì hỏi có ghi đè lên không.Nếu kí tự nhập vào là ‘Y’ hoặc ‘y’ thì tiếp tục ghi đè c.Lập hàm biến đổi file morse thành file text trước hết lập hàm char bienchu(char *s) trong đó trả tên hàm về kí tự tương ứng với xâu morse s,nếu s không có trong bảng mẫu thì trả về kí tự * trong hàm chính ta sẽ đọc từng kí tự của file đầu vào cho đến khi gặp dấu space hoặc dấu / hoặc dấu xuống dòng ,sau đó ghi các kí tự đã đọc được vào 1 xâu khác rồi qua hàm bienchu(s) chuyển thành kí tự tương ứng,và ghi ra file đầu ra mỗi lần xuống dòng ta tăng giá trị của biến gi số dòng lên 1 và in vào file đầu ra kí tự \n Nếu in ra kí tự * thì báo lỗi với xâu s đọc vào ở dòng có giá trị là biến dòng. d. Lập hàm biến đổi file text thành file morse Tương tự trước hết lập hàm char *bienmorse(char c) trong đó trả tên hàm về xâu morse tương ứng với kí tự c ,nếu c không có trong bảng mẫu thì trả về xâu xxx Trong hàm chính ta cũng đọc từng kí tự của file đầu vào sau đó chuyển thanh xâu morse và in ra file đầu ra Nếu thấy chuyển đổi thành xxx thì báo lỗi kí tự đó e.Chương trình chính Dùng hàm main có đối: main(int n,char *name[]) Thực hiện các thủ tục mở file đầu vào,file đầu ra Gọi hàm kiểm tra file đầu vào.Sau đó tưong ứng dùng hàm biến đổi cần thiết.
3.Chuyển đổi file morse thành file text Trong trường hợp file đầu vào là file morse phải chuyển đổi thành file text Xây dựng một mảng cấu trúc chứa các phần tử text và morse .Đặt một xâu kí tự s .Gán đoạn kí tự nằm giữa hai dấu (/) cho xâu s sau đó so sánh xâu với đoạn kị tự morse .Nếu đúng kí tự morse thì in ra file output kí tự đã chuyển đổi .Tiếp tục cho đến khi kết thúc file input .Trong trường hợp lỗi khi xâu s không giống với bảng dữ liệu trong biến cấu trúc thì có báo lỗi dựa vào giá trị biến trạng thái