Viết chương trình đọc các phần từ của một tệp văn bản vào một danh sách kết nối LIFO

19 51 0
Viết chương trình đọc các phần từ của một tệp văn bản vào một danh sách kết nối LIFO

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN - BÁO CÁO ĐỀ TÀI THỰC TẬP CƠ SỞ TRƯỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN - BÁO CÁO ĐỀ TÀI THỰC TẬP CƠ SỞ Giáo viên HD: TS Trần Xuân Sang Vinh, 8/2015 Mục lục Lời cảm ơn .3 Lời nói đầu .4 PHẦN 1: BÀI TOÁN I NỘI DUNG ĐỀ II GIẢI QUYẾT VẤN ĐỀ LÝ THUYẾT Danh sách liên kết .7 LIFO gì? III THUẬT TOÁN GIẢI QUYẾT CÔNG VIỆC CHO MỖI HÀM Lựa chọn ngơn ngữ lập trình Xác định toán .7 Thuật toán code hàm .8 3.1 Thuật toán đọc phần tử tệp vào danh sách kết nối LIFO 3.2 Giải thuật xếp danh sách 3.3 Giải thuật thêm số mà không làm thay đổi tính tăng danh sách IV CHƯƠNG TRÌNH MINH HỌA .9 V BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TƯƠNG ỨNG .12 PHẦN 2: BÀI TOÁN 13 I NỘI DUNG ĐỀ 13 II GIẢI QUYẾT VẤN ĐỀ LÝ THUYẾT 13 Trình bày thuật tốn xếp chọn .13 Ví dụ minh họa 13 III GIẢI QUYẾT BÀI TỐN VÍ DỤ 13 Lựa chọn ngơn ngữ lập trình 13 Xác định toán .13 Thuật toán SelectionSort 14 IV CHƯƠNG TRÌNH 14 VI BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TƯƠNG ỨNG .15 Đề tài thực tập sở Mã đề 025 Lời cảm ơn Ngày nay, công nghệ thông tin ngày phát triển tỏ rõ tầm quan trọng tất lĩnh vực, nói cơng nghệ thông tin trở thành thước đo để đánh giá phát triển xã hội đại – nơi mà người dần thoát khỏi cách làm việc thủ công, thô sơ dần tiến đến tin học hóa tất lĩnh vực để cơng việc có hiệu hơn, tiết kiệm thời gian nhân lực Việc nghiên cứu lập trình phần mềm, ứng dụng điều hướng tới sinh viên theo học công nghệ thông tin.Bản báo cáo trình bày kết việc lập trình tốn liên quan đến tệp cấu trúc liệu giải thuật đề tài thực tập sở Trong trình thực em nhận giúp đỡ nhiệt tình từ giảng viên khoa công nghệ thông tin trường Đại Học Vinh Nhân dịp em xin gửi lời cảm ơn đến thầy cô khoa công nghệ thông tin trường Đại Học Vinh tạo hội giúp em tham gia học hỏi, rèn luyện kỹ cần thiết cho đợt thực tập cuối khóa Đặc biệt em xin gửi lời cảm ơn đến giảng viên TS.Trần Xuân Sang quan tâm góp ý cho làm thực tập sở sẵn sàng trả lời tất thắc mắc cần thiết giúp em hoàn thành tốt làm Mặc dù có nhiều cố gắng kiến thức hạn chế với kinh nghiệm chưa có nên khơng tránh khỏi thiếu sót.Vì em mong nhận ý kiến đóng góp bổ sung thầy giáo bạn để làm thực tập sở em hoàn thiện Em xin chân thành cảm ơn! CNTT Page Đề tài thực tập sở Mã đề 025 Lời nói đầu Ngày nay, sống giới công nghệ thông tin Tin học vào tất “ngõ ngách” đời sống xã hội, từ công việc đơn giản giải toán tuý đến vấn đề phức tạp việc áp dụng tin học công nghệ viễn thông hay nghiên cứu vũ trụ…Việc ứng dụng công nghệ thông tin quản lý đem lại nhiều lợi ích thiết thực cho doanh nghiệp từ việc lưu trữ liệu đến việc tìm kiếm thơng tin, lên báo cáo…giúp cho công tác quản lý đựơc thực cách dể dàng Những năm gần lĩnh vực công nghệ thơng tin, Việt Nam có bước phát triển vượt bậc theo hướng thẳng đón đầu vào việc đại hố, cơng nghệ hố, mạnh dạn đầu tư trang thiết bị, máy móc đại Trong thời gian thực tập VDC Anh (Chị) tận tình hướng dẫn thời gian thực tập ngắn, vốn kiến thức kinh nghiệm thực tế cịn hạn chế nên đề tài chắn khơng tránh khỏi thiếu sót Em mong nhận đóng góp ý kiến từ phía quan thực tập, quý Thầy (Cô) bạn để báo cáo hồn thiện CNTT Page Đề tài thực tập sở Mã đề 025 ĐỀ TÀI THỰC TẬP CƠ SỞ - PHẦN LẬP TRÌNH Mã đề: 025 Câu 1: Viết chương trình đọc phần từ tệp văn vào danh sách kết nối LIFO Sắp xếp danh sách theo thứ tự tăng dần Nhập vào từ bàn phím số nguyên x Chèn số x vào danh sách cho không làm tính xếp tăng danh sách Câu 2: Trình bày thuật tốn xếp chọn Nêu ví dụ minh họa Cài đặt thuật tốn CNTT Page Đề tài thực tập sở CNTT Mã đề 025 Page Đề tài thực tập sở Mã đề 025 PHẦN 1: BÀI TOÁN I NỘI DUNG ĐỀ Viết chương trình đọc phần từ tệp văn vào danh sách kết nối LIFO Sắp xếp danh sách theo thứ tự tăng dần Nhập vào từ bàn phím số nguyên x Chèn số x vào danh sách cho không làm tính xếp tăng danh sách II GIẢI QUYẾT VẤN ĐỀ LÝ THUYẾT Danh sách liên kết Danh sách liên kết tập hợp tuyến tính phần tử kiểu gọi nút (node),mỗi nút có đặc điểm sau:  Mỗi nút có hai trường, trường gọi trường liệu (data), trường trường liên kết (link) trỏ tới (thường gọi next)  Trường liên kết phần tử thứ i danh sách trỏ tới phần tử thứ (i+1) danh sách  Phần tử gọi head phần tử cuối gọi tail Head không chứa liệu trường next tail vào NULL  Trường data trường chứa liệu lưu danh sách liên kết LIFO gì? Lifo viết tắt “last-in-first-out”, hiểu đơn giản phương pháp vào sau trước Ví dụ ta nhập vào mảng gồm dãy a1, a2,…,a(n-1), a(n) Xuất dãy xuất phần tử từ sau đến trước a(n), a(n-1),…., a2 ,a1 III THUẬT TỐN GIẢI QÚT CƠNG VIỆC CHO MỠI HÀM Lựa chọn ngơn ngữ lập trình Ngơn ngữ lập trình C Xác định tốn CNTT Page Đề tài thực tập sở Mã đề 025 INPUT: -Tệp văn input.txt tệp đầu vào chứa số nguyên -Mỗi số cách dấu cách trống dấu xuống dòng OUTPUT: -In hình kết có tệp input.txt -Sắp xếp danh sách theo thứ tự tăng dần -Chèn vào số x mà khơng làm tính tăng danh sách Thuật toán code hàm 3.1 Thuật toán đọc phần tử tệp vào danh sách kết nối LIFO Bước 1: Khai báo biến trỏ tệp biến trỏ kiểu node Kiểm tra có tồn tệp input.txt khơng, tồn bắt đầu đọc liệu từ tệp input.txt Bước 2: Kiểm tra xem trình đọc tệp kết thúc hay chưa Nếu chưa thực bước Ngược lại chuyển sang bước Bước 3: Khởi tạo node mới, lấy liệu đưa lên đầu danh sách Quay lại bước Bước 4: Đóng tệp kết thúc 3.2 Giải thuật xếp danh sách Bước 1: Ta khai báo hai biến trỏ p1,p2 kiểu node dùng làm biến chạy, biến kiểu int làm biến trung gian, sau gán p1=f Bước 2: Kiểm tra p1 chưa trỏ đến node cuối next != NULL)> gán p2 node mà p1 trỏ tiếp theo< p2=p1->link> Bước 3: Kiểm tra xem p2 chưa trỏ đến node cuối so sánh giá trị phần tử mà p1 trỏ tới có lớn giá trị phần tử mà p2 trỏ tới khơng, tiến hành đổi chỗ node, ngược lại ta gán p2 phần tử p2 trỏ đến:p2=p2->link Bước 4: Khi p2==NULL gán p1 node mà p1 trỏ đến Quay lại bước 3.3 Giải thuật thêm số mà khơng làm thay đổi tính tăng danh sách Bước 1: Ta khai báo biến trỏ tạm p1, biến trỏ x kiểu node CNTT Page Đề tài thực tập sở Mã đề 025 Bước 2: Khởi tạo node mới, nhập giá trị cho node vừa cấp phát Bước 3: Tìm phần tử cuối danh sách Bước 4: Tiến hành so sánh giá trị node vừa tạo với giá trị phần tử node có danh sách Nếu giá trị lớn giá trị node đầu tiến hành chèn đầu, lớn giá trị node cuối tiến hành chèn cuối, ngược lại chèn IV CHƯƠNG TRÌNH MINH HỌA #include #include #include typedef struct node { int info; node *link; }; // Doc tep vao danh sach ket noi LIFO node *doctep(node *f) { FILE *u; f==NULL; node *p; u=fopen("input.txt","r"); if(u==NULL) { printf("\nFILE khong ton tai!"); getch(); } else{ while(!feof(u)) CNTT Page Đề tài thực tập sở Mã đề 025 { p=new node(); fscanf(u,"%d",&p->info); p->link=f; f=p; } } fclose(u); return f; } //Xem danh sach void xemdanhsach(node *f) { node *p; p=f; while (p!=NULL) { printf(" \t %d ",p->info); p=p->link; } } //Sap xep tang void sapxeptang(node *f) { node *p1,*p2; int tg; p1=f; while (p1->link!=NULL){ p2=p1->link; while (p2!=NULL){ if (p1->info>p2->info){ CNTT Page Đề tài thực tập sở Mã đề 025 tg=p1->info; p1->info=p2->info; p2->info=tg; } else { p2=p2->link; } } p1=p1->link; } } //Tim phan tu cuoi node *timptcuoi(node *f){ node *p=f; while(p->link!=NULL) { p=p->link; } return p; } //Them so x khong lam thay doi tinh tang cua danh sach node *themx(node *f) { node *p,*x; x=new(node); printf("\n\t(*)Nhap so can them vao : "); scanf("%d",&x->info); node *l=timptcuoi(f); if (f==NULL) { x->link=NULL; CNTT Page Đề tài thực tập sở Mã đề 025 return x; } if((f->info)>=(x->info)){ x->link=f; return x; } if((l->info)info)){ l->link=x; x->link=NULL; return f; } else { p=f; while (((p->link)->info)info)) p=p->link; x->link=p->link; p->link=x; return f; } } //Chuong trinh chinh main() { node *f=NULL; f=doctep(f); printf("\n\t(*)Cac phan tu duoc doc tu tep la:"); xemdanhsach(f); printf("\n\t(*)Day sau sap xep tang:"); sapxeptang(f); xemdanhsach(f); printf("\n\t(*)Them so vao khong thay doi thu tu sap xep :"); f=themx(f); CNTT Page 10 Đề tài thực tập sở Mã đề 025 xemdanhsach(f); getch(); } V BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TƯƠNG ỨNG Tệp đầu vào input.txt: Output: CNTT Page 11 Đề tài thực tập sở Mã đề 025 PHẦN 2: BÀI TOÁN I NỘI DUNG ĐỀ Trình bày thuật tốn xếp chọn Nêu ví dụ minh họa Cài đặt thuật toán II GIẢI QUYẾT VẤN ĐỀ LÝ THUYẾT Trình bày thuật tốn xếp chọn Ý tưởng: Chọn phần tử nhỏ n phần tử ban đầu, đưa phần tử vị trí dãy hành Sau khơng quan tâm đến nữa, xem dãy hành cịn n-1 phần tử dãy ban đầu, vị trí thứ Lặp lại q trình cho dãy hành đến dãy hành phần tử Dãy ban đầu có n phần tử, tóm tắt ý tưởng thuật tốn thực n-1 lượt việc đưa phần tử nhỏ dãy hành vị trí đầu dãy Giải thuật: Bước 1: i=0 Bước 2: Tìm phần tử A[min] nhỏ dãy hành từ a[i]-> a[n-1] Bước 3: Hốn vị a[min] a[i] Bước 4: Nếu i

Ngày đăng: 29/08/2021, 19:57

Từ khóa liên quan

Mục lục

  • Lời cảm ơn

  • PHẦN 1: BÀI TOÁN 1

    • I. NỘI DUNG ĐỀ

    • II. GIẢI QUYẾT VẤN ĐỀ LÝ THUYẾT

      • 1. Danh sách liên kết.

      • 2. LIFO là gì?

      • III. THUẬT TOÁN GIẢI QUYẾT CÔNG VIỆC CHO MỖI HÀM.

        • 1. Lựa chọn ngôn ngữ lập trình

        • 2. Xác định bài toán

        • 3. Thuật toán và code các hàm

          • 3.1. Thuật toán đọc các phần tử của tệp vào danh sách kết nối LIFO

          • 3.2. Giải thuật sắp xếp danh sách

          • 3.3. Giải thuật thêm một số mà không làm thay đổi tính tăng của danh sách

          • IV. CHƯƠNG TRÌNH MINH HỌA

          • V. BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TƯƠNG ỨNG.

          • PHẦN 2: BÀI TOÁN 2

            • I. NỘI DUNG ĐỀ

            • II. GIẢI QUYẾT VẤN ĐỀ LÝ THUYẾT

              • 1. Trình bày thuật toán sắp xếp chọn.

              • 2. Ví dụ minh họa.

              • III. GIẢI QUYẾT BÀI TOÁN VÍ DỤ.

                • 1. Lựa chọn ngôn ngữ lập trình.

                • 2. Xác định bài toán

                • 3. Thuật toán SelectionSort.

                • IV. CHƯƠNG TRÌNH.

                • VI. BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TƯƠNG ỨNG.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan