1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thuật toán kiểm tra các tính chất của quan hệ

22 71 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 709 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bản báo cáo này trìnhbày kết quả của việc lập trình các bài toán.. * Ý tưởng: - Từ tệp input.txt mỗi dòng là một xâu họ tên chứa nhiều dấu cách trống,các ký tự trong xâu họ tên chữ hoa c

Trang 1

Việc nghiên cứu và lập trình ra các phần mềm, các ứng dụng mới là điềuhướng tới của các sinh viên theo học Công nghệ thông tin Bản báo cáo này trìnhbày kết quả của việc lập trình các bài toán Trong quá trình thực hiện em nhận được

sự giúp đỡ nhiệt tình từ các giảng viên trong khoa Công nghệ thông tin trường Đạihọc Vinh

Nhân dịp này em xin gửi lời cảm ơn đến các thầy cô trong khoa Công nghệthông tin – trường Đại học Vinh đã tạo cơ hội giúp em được tham gia học hỏi, rènluyện các kỹ năng 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 ThS Nguyễn Thị Hồng Anh đã quan tâmgóp ý cho bài làm thực tập cơ sở và sẵn sàng trả lời tất cả những thắc mắc khi cầnthiết giúp em hoàn thành tốt bài làm của mình

Mặc dù đã có nhiều cố gắng nhưng do kiến thức còn hạn chế cùng với kinhnghiệm chưa có nên không tránh khỏi thiếu sót vì vậy em rất mong nhận đượcnhững ý kiến đóng góp bổ sung của thầy giáo, cô giáo và các bạn để đề tài làm thựctập cơ sở của em được hoàn thiện hơn

Em xin chân thành cảm ơn.

Sinh viên thực hiện

Trang 2

LỜI CẢM ƠN

Trong thời đại công nghệ thông tin ngày nay, việc ứng dụng Công nghệThông tin vào cuộc sống cũng như các ngành khoa học ngày càng trở nên quantrọng Trước đây khi Công nghệ Thông tin chưa phát triển thì việc giải quyết các bàitoán phức tạp và kết quả đạt được với độ chính xác thấp Những bài toán này đòihỏi phải có những thuật toán hợp lý, cũng như cấu trúc lưu trữ thích hợp thì mới đạtđược kết quả tối ưu nhất Chính vì thế việc tìm hiểu nó là một phần rất quan trọngđối với một người lập trình Thêm vào đó là những kỹ thuật về việc xử lý văn bản,

xử lí tệp là một kỹ năng tối thiểu với một người làm việc với máy tính

Đợt thực tập cơ sở này chính là bước đầu tiên đi sâu vào tìm hiểu, đây là cơhội để chúng em tổng hợp lại tất cả những gì mà đã được học trong thời gian qua

Chúng em xin chân thành cảm ơn sự hướng dẫn của các thầy giáo, cô giáotrong Khoa Công Nghệ Thông Tin – Trường Đại học Vinh Chúng em đặc biệt bày

tỏ lòng biết ơn chân thành tới cô giáo NGUYỄN THỊ HỒNG ANH, cô đã tạo mọiđiều kiện và luôn giúp đỡ, hướng dẫn chúng em tận tình để chúng em hoàn thành tốt

đề tài thực tập cơ sở này

Cuối cùng, chúng em xin chân thành cảm ơn và kính chúc các thầy giáo, côgiáo sức khoẻ và hạnh phúc

Trang 3

MỤC LỤC

Trang

I BÀI TOÁN 4

Họ và tên: Họ Tên .4

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

2.3 Chương trình 5

2.4 Bộ dữ liệu test và kết quả test tương ứng 10

Phần II Thuật Toán Kiểm Tra Các Tính Chất Của Quan Hệ 12

2.1 Bài toán 12

2.2.1 Dùng ma trận lô-gic để biểu diễn quan hệ hai ngôi trên một tập hợp 12

2.2.1.1 Các khái niệm 12

2.2.1.2 Cách biễu diễn 12

2.2.1.3 Các tính chất của quan hệ 12

2.2.3 Cài đặt thuật toán kiểm tra các tính chất của quan hệ (phản xạ, đối xứng, bắc cầu) 13

2.2.3.1 Thuật toán kiểm tra tính phản xạ 14

2.2.3.2 Thuật toán kiểm tra tính đối xứng 15

2.2.3.3 Thuật toán kiểm tra tính bắc cầu 16

2.2.3.4 Chương trình 17

2.2.3.5 Dữ liệu và kết quả test: 18

Trang 4

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

I BÀI TOÁN

Cho một tệp văn bản input.txt, mỗi dòng là một xâu họ và tên Viết chươngtrình tách tên và tách họ của các xâu họ và tên đọc được từ tệp input.txt Kết quảđưa vào tệp văn bản output.txt theo dạng:

Họ và tên: Họ Tên

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

2.1 Thuật toán chuẩn hóa xâu.

* Ý tưởng:

- Từ tệp input.txt mỗi dòng là một xâu họ tên chứa nhiều dấu cách trống,các

ký tự trong xâu họ tên chữ hoa chữ thường không theo quy luật đó là các chữ cáiđầu của họ tên phải viết hoa và sau đó là chữ cái thường.Nên ta tiến hành chuẩn hóaxâu đó là cắt các ký tự trống liên tiếp,các chữ cái đầu của họ tên phải được viết hoa

Input: xâu họ tên listten

Nhập vào input.txt một xâu họ tên ngUYEN ThỊ HanH

Output: xâu listten đã chuẩn hóa

Ở tệp output.txt được chuẩn hóa và lưu thành Nguyễn Thị Hạnh

Các bước thực hiện:

+Bước 1: Đọc dữ liệu từ tệp input.txt vào mảng 2 chiều listTen[n][m]

+Bước 2: Xóa các ký tự trống ở cuối chuỗi

+Bước 3: Xóa các ký tự trống ở đầu chuỗi

+Bước 4: Kiểm tra xâu có chữ hoa hay không.Nếu có chuyển tất cả về chữthường

+Bước 5: Xóa 2 ký tự trống liên tiếp trong xâu

+Bước 6: Duyệt xâu kể từ phẩn tử đầu tiên khi gặp khoảng trống thì chuyểnchữ cái đầu tiên ngay sau đó thành chữ hoa

Trang 5

+Bước 7: Chuyển chữ cái đầu tiên của xâu thành chữ hoa

2.2 Thuật toán tách xâu họ tên

* Ý tưởng:

- Từ xâu họ và tên đã chuẩn hóa, tiến hành duyệt xâu từ vị trí đầu tiên chogặp dấu cách trống đầu tiên Cắt xâu này thu được xâu họ Sau khi cắt được họ tiếptục duyệt xâu từ cuối xâu, gặp dấu cách trống đầu tiên, cắt xâu này ta thu được xâutên Nếu xâu trống thì xâu họ và tên là Null

Nếu listen[i][j] !=’ ‘: listHo[i][j] = listen[i][j]

Ngược lại: Dừng chương trình Xâu thu được là xâu họ

-Bước 4: a=0,k = strlen(listen[i][j]), j=k ListTen[i][j] //Duyệt kí tự cuối

cùng trong xâu

Bước 5: j

-Nếu listen[i][j]!=’ ‘: ListT[i][a] = listen[i][j] a++

strrev(listT[i]) ; //Đọc xâu theo chiều ngược lại

Ngược lại: Dừng chương trình Xâu thu được là xâu tên

Trang 7

int testHo = 0, testTen = 0, j;

char listHo[255][255], listT[255][255];

for (i=0;i < l; i++)

{

chuanhoachuoi(listTen[i]);

for (j = 0; listTen[i][j] != ' '; j++){

listHo[i][j] = listTen[i][j];

}listHo[i][j] = NULL;

int k = strlen(listTen[i]);

if (listTen[i][k-1] == '\n'){

k -= 1;

listTen[i][k] = NULL;

}int a = 0;

Trang 8

for (j = k-1; listTen[i][j] != ' '; j ){

listT[i][a] = listTen[i][j];

a++;

}listT[i][a] = NULL;

strrev(listT[i]) ;}

Trang 9

cout<<"\n* 3.LUU TEP DA DUOC CHUAN

HOA VA TACH VAO TEP

cout << "\n\n-Ho va ten: " << listTen[i] <<

"\n\n-Ho: " << listHo[i] << "\t-Ten: " << listT[i] <<

Trang 12

Phần II Thuật Toán Kiểm Tra Các Tính Chất Của Quan Hệ

2.1 Bài toán

1 Nêu cách dùng ma trận logic để biễu diễn quan hệ 2 ngôi trên một tập hợp

2 Nêu ví dụ minh họa

3 Cài đặt thuật toán kiểm tra các tính chất của quan hệ(phản xạ, đối xứng, bắc cầu)

Theo cách biểu diễn này, rõ ràng với mỗi quan hệ R trên A sẽ xác định duy nhấtmột ma trận logic , và ngược lại, khi biết ma trận logic của một quan hệ R, sẽxác định được chính xác quan hệ R

2.2.1.3 Các tính chất của quan hệ

- Một quan hệ có tính chất phản xạ khi và chỉ khi ∀a A thì aRa

- Một quan hệ có tính chất đối xứng khi và chỉ khi ∀a, b A thì aRb và bRa

- Một quan hệ có tính chất bắc cầu khi và chỉ khi ∀a,b,c A thì aRb và bRc thì aRc

* Nếu sử dụng ma trận logic để biểu diễn qua hệ 2 ngôi trên một tập hợp thì ta có các nhận xét sau đây:

- Một quan hệ có tính phản xạ khi và chỉ khi ma trận biểu diễn nó có tất cả phần tử trên đường chéo chính đều bằng 1

Trang 13

- Một quan hệ có tính chất đối xứng khi và chỉ khi ma trận biểu diễn nó là một

ma trận đối xứng qua đường chéo chính

- Một quan hệ có tính chất bắc cầu khi và chỉ khi ma trận biễu diễn nó có

=1 và =1 thì =1

2.2.2 Ví dụ minh họa

Cho tập hợp A = {1, 2, 3, 4, 5}, ta định nghĩa quan hệ R trên A như sau: ∀a, b∈

A ta nói aRb khi và chỉ khi a + b là một số lẻ, khi đó quan hệ R có thể được biểudiễn bằng các phương pháp sau:

- Quan hệ R được xác định bởi tập hợp sau:

R(A) = {(1, 2), (2, 1), (1, 4), (4, 1), (2, 3), (3, 2), (3, 4), (4, 3), (2, 5), (5, 2), (4, 5), (5, 4)}

- Ma trận logic của quan hệ R được xác định như sau:

2.2.3 Cài đặt thuật toán kiểm tra các tính chất của quan hệ (phản xạ, đối xứng, bắc cầu)

Trang 14

2.2.3.1 Thuật toán kiểm tra tính phản xạ

- Input: Ma trận logic n x n thể hiện quan hệ R

- Output: Cho kết quả là 1 nếu quan hệ có tính phản xạ, ngược lại trả về 0

?

a[i][j]

=1

nd

j

S

S

S Đ

Đ

Đ

j

=0

kq

=1

begin

Nhập

n và mảng a

i

=0

return0

Trang 15

2.2.3.2 Thuật toán kiểm tra tính đối xứng

- Input: Ma trận logic n x n thể hiện quan hệ R

- Output: Cho kết quả là 1 nếu quan hệ có tính đối xứng, ngược lại trả về 0

begin

kq

=1

i

= 0

j

= 0j

<

n

?

a[i][j]

=a[j][

i++

j

++

e

Nhập

n và mảng a

return

returnkq

Trang 16

2.2.3.3 Thuật toán kiểm tra tính bắc cầu

- Input: Nhập vào ma trận logic n x n

- Output: Cho kết quả là 1 nếu quan hệ có tính bắc cầu, ngược lại trả về 0

S

Đ

Đ

Đ Đ Đ

begin

kq

=

1i

=0

=1

?

k

=0

=1

?

a[i][k]

=1

?

j++

i++

end

Nhập

n và mảng a

return0

returnkq

return0

Trang 17

BÁO CÁO THỰC TẬP CƠ SỞ MÃ ĐỀ 033

scanf("%d",&tg);

a[i][j]=tg;

}}

void hienmang(int a[50][50], int n){

int i,j;

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

printf("%3d",a[i][j]);

printf("\n");

}}

int phanxa(int a[50][50], int n){

int i,j,kq=1;

for(i=0;i<n;i++)

for(j=0;j<n;j++) if((i==j)&&( a[i][j]!=1))return 0;

return kq;

}int doixung(int a[50][50], int n){

int i,j,kq=1;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

i][k]

=1

?

k++

turn0

Trang 18

if (a[i][j]!=a[j][i]) return 0;

return kq;

}int baccau(int a[50][50], int n){

}void main(){

if(doixung(a,n)==1) printf("\nquan he co tinh doi xung");

else printf("\nquan he khong co tinh doi xung");

if(baccau(a,n)==1) printf("\nquan he co tinh bac cau");

else printf("\nquan he khong co tinh bac cau");

getch();

}2.2.3.5 Dữ liệu và kết quả test:

Nhập các ma trận:

- Ma trận a[5][5]

Trang 19

Kết quả:

- Ma trận a[4][4]

Trang 21

KẾT LUẬN

Công nghệ thông tin là công cụ đắc lực, là lĩnh vực có nhiều ứng dụng phục

vụ cho nhiều ngành khác nhau trong đời sống xã hội Qua quá trình làm đề tài em

đã có dịp củng cố, bổ sung kiến thức và thu được những kinh nghiệm quý báu, phục

vụ cho việc học tập và làm việc sau này như là các kiến thức về tìm kiếm thông tinthông dụng hiện nay, nâng cao khả năng làm việc theo nhóm, nâng cao kiến thức vềngôn ngữ lập trình C, cấu trúc dữ liệu và giải thuật và cách tổ chức giải quyết yêucầu của một bài toán cụ thể…

Tuy nhiên do hạn chế về trình độ, thời gian không nhiều nên những kết quảđạt được vẫn chưa đầy đủ và có thể có nhiều sai sót Rất mong được sự đóng góp ýkiến của các thầy cô giáo và các bạn để đề tài của em được hoàn thiện hơn

Cuối cùng chúng em xin chân thành cảm ơn ThS Nguyễn Thị Hồng Anh đãgiúp đỡ nhiệt tình cho em hoàn thiện đề tài này

Trang 22

TÀI LIỆU THAM KHẢO

[1] Đỗ Đức Giáo, “Toán rời rạc” NXB Đại học quốc gia Hà Nội.[2] Gs.Phạm Văn Ất, “Kỹ Thuật Lập trình C Cơ sở và Nâng cao” NXB Thời Đại

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w