Tải bản đầy đủ (.doc) (14 trang)

TỆP văn bản và MẢNG 1 CHIỀU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (135.65 KB, 14 trang )

Đề tài thực tập cơ sở
LỜI CẢM ƠN

Em xin gửi lời cảm ơn đến khoa Công nghệ thông tin đã tạo cơ hội giúp em
được tham gia học hỏi, rèn luyện các kỹ năng cần thiết cho đợt thực tập này. Cũng như
Công ty cổ phần đào tạo và giải pháp mạng IPEXPERT (ĐC: 60 Đào Tấn) đã tạo mọi
điều kiện tốt nhất cho em và nhóm sinh viên thực tập, các anh chị, giáo viên đã tận
tình chỉ bảo, giúp đỡ. Hi vọng là em sẽ có cơ hội được tiếp tục tham gia thực tập tại
công ty trong đợt thực tập cuối khóa sắp tới.Đặc biệt em xin gửi lời cảm ơn đến cô
giáo Phan Lê Na đã quan tâm góp ý cho bài làm thực tập cơ sở và sẵn sàng trả lời
những thắc mắc khi cần thiết giúp em hồ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 kinh
nghiệ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 được những
ý kiến đóng góp bổ sung của thầy cơ giáo và các bạn để bài làm thực tập cơ sở của em
được hoàn thiện hơn.
Vinh,ngày 12 tháng 8 năm 2015
Sinh viên thực tập

SV thực hiện: Phan Văn Châu

Page 1


Đề tài thực tập cơ sở
MỤC LỤC
Trang
PHẦN 1: TỆP VĂN BẢN VÀ MẢNG 1 CHIỀU.................................................3
I.NỘI DUNG ĐỀ:.............................................................................................3
Viết chương trình đọc các phần tử của tệp văn bản vào mảng một chiều , sau
đó xóa tất cả các phần tử x của mảng...............................................................3
II.THUẬT TỐN GIẢI QUYẾT CƠNG VIỆC CHO MỖI HÀM:.................3


1. Lựa chọn ngơn ngữ lập trình:.......................................................................3
2. Xác định bài tốn:......................................................................................3
3. Ý tưởng thuật toán:.......................................................................................3
4. Thuật toán:....................................................................................................4
IV. BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TEST TƯƠNG ỨNG:......................7
...............................................................................................................................7
+ Sau khi xóa phần tử x trong mảng:....................................................................7
...............................................................................................................................7
PHẦN 2: QUAN HỆ 2 NGÔI...............................................................................8
I. NỘI DUNG ĐỀ:............................................................................................8
II. GIẢI QUYẾT VẤN ĐỀ LÝ THUYẾT........................................................8
1.Cách dùng ma trận logic để biểu diễn quan hệ 2 ngôi trên 1 tập hợp............8
3.1. Nhận biết các tính chất của quan hệ thông qua ma trận logic:...............9
3.3. Kết quả:................................................................................................12

Page 2


Đề tài thực tập cơ sở
PHẦN 1: TỆP VĂN BẢN VÀ MẢNG 1 CHIỀU

I. NỘI DUNG ĐỀ:
Viết chương trình đọc các phần tử của tệp văn bản
sau đó xóa tất cả các phần tử x của mảng

vào mảng một chiều ,

1. Khái niệm tệp văn bản: Tệp văn bản là một tập hợp các thông tin do người
dùng tạo ra từ máy tính, các thơng tin này có thể ở dạng số thập phân, nhị phân hay
chuỗi kí tự.

2. Mảng 1 chiều:
a. Khái niệm: Mảng một chiều là tập hợp các phần tử có cùng kiểu dữ liệu.
Để xác định Mảng một chiều ta cần 3 thành phần chính :
•kiểu dữ liệu của Mảng
•tên Mảng
• số phần tử của Mảng.

b. Cấu trúc: type name[element];
Ví dụ: int mang[5];
II.THUẬT TỐ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:
Ngơn ngữ lập trình C.
2. Xác định bài tốn:
+ INPUT: Tạo 1 tệp văn bản tepdauvao.txt
+ OUTPUT:
- Đọc dữ liệu từ tệp tepdauvao.txt vào mảng một chiều.
- Xóa tất cả các phần tử x trong mảng.
3. Ý tưởng thuật toán:
Kiểm tra xem tệp đầu vào “tepdauvao.txt” đã có hay chưa ?

SV thực hiện: Phan Văn Châu

Page 3


Đề tài thực tập cơ sở
- Nếu tệp đầu vào “tepdauvao.txt” chưa được tạo thì báo “tệp khơng tồn tại”
và kết thúc bài tốn.
- Nếu có, đọc các phần tử của mảng, sử dụng hàm xóa phần tử để xóa tất cả
các phần tử x trong mảng.

4. Thuật toán:
Bài toán sử dụng các hàm:
- Đọc tệp vào mảng m: Kiểm trang tệp có tồn tại hay khơng, nếu tồn tại thì đọc
vào mảng m, ngược lại thì thơng báo ra màn hình và kết thúc chương trình
- Xóa 1 phần tử : cho vịng lặp chạy từ vị trí vt cần xóa đến vị trí thứ n-1, gán
phần tử thứ I = phần tử thứ i+1, đồng thời giảm n xuống 1 đơn vị.
- Xóa phần tử x: cho vịng lặp chạy từ i=0 đến n (i là biến đếm, n là độ dài
mảng). Nếu phần tử thứ i bằng x thì gọi hàm xóa phần tử thứ i đồng thời i giảm xuống
1 đơn vị.
- Hàm main:
o Gọi hàm đọc tệp
o Gọi hàm xóa phần tử.
o In ra màn hình các phần tử khơng xóa.
III. Chương trình:
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
void doctep(int m[],int &n)
{
n=0;
FILE *f;
f=fopen("tepdauvao.txt","rt");
if(f==NULL)
{
printf("\nChua co tep! Kiem tra lai tep?");
getch();

Page 4



Đề tài thực tập cơ sở
exit(1);
} else
while(!feof(f))
{
fscanf(f,"%d",&m[n]);
n++;
}
}

void xemmang(int m[],int n)
{
for(int i=0;i{
printf("%5d",m[i]);
}
printf("\n");
}
void xoa1phantu(int m[],int *n,int vt)
{
int i;
for(i=vt;i<*n-1;i++)
m[i]=m[i+1];
(*n)--;
}

SV thực hiện: Phan Văn Châu

Page 5



Đề tài thực tập cơ sở
void xoax(int m[],int *n,int x)
{
int i;
for(i=0;i<*n;i++)
if(x==m[i])
{
xoa1phantu(m,n,i);
i++;
}
}

int main()
{
int i,n,x;
int m[100];
doctep(m,n);
printf("\nMang mot chieu gom cac phan tu sau: \n");
xemmang(m,n);
printf("\n Nhap gia tri can xoa trong mang x= ");
scanf("%d",&x);
xoax(m,&n,x);
printf("\n Mang sau khi xoa: ");
xemmang(m,n);
getch();
return 0;
}

Page 6



Đề tài thực tập cơ sở
IV. BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TEST TƯƠNG ỨNG:
Để chạy chương trình ta sử dụng một số phần mềm chuyên dụng như : Turbo C,
Visual C++, ….
Và bộ dữ liệu đi kèm: ta tạo 1 tệp tepdauvao.txt
Nhấn F5 để chạy chương trình

+ Tạo 1 tệp tepdauvao.txt là tệp đầu vào có dịng đầu là dãy số nguyên n.
+ Chạy chương trình và kiểm tra kết quả.

+ Sau khi xóa phần tử x trong mảng:

SV thực hiện: Phan Văn Châu

Page 7


Đề tài thực tập cơ sở
PHẦN 2: QUAN HỆ 2 NGÔI

I. NỘI DUNG ĐỀ:
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 tốn kiểm tra các tính chất quan hệ ( phản xạ, đối xứng, bắc
cầu).
II. GIẢI QUYẾT VẤN ĐỀ LÝ THUYẾT
1. Cách dùng ma trận logic để biểu diễn quan hệ 2 ngơi trên 1 tập hợp.
1.1. Quan hệ:

• Cho hai tập hợp A,B. Mỗi tập con R của tích Descartes A x B được gọi là
quan hệ hai ngôi từ A vào B. Nếu R là quan hệ từ A vào B và cặp (a,b) thuộc R thì ta kí
hiệu aRb.
• Nếu A = B thì một tập con R của tích Descartes AxA được gọi là quan hệ trên
A.
• Mở rộng của quan hệ hai ngôi là quan hệ n ngôi dẫn đến cấu trúc bảng
trong cơ sở dữ liệu quan hệ.
(*) Ví dụ: Các quan hệ tuỳ ý giữa các tập hữu hạn có thể dẫn ra làm ví dụ rất
nhiều, chẳng hạn cho A = {a, b, c, d}; B= {1, 2, 3}.
• Quan hệ R={ (a,1), (a, 2), (b, 2), (c, 2)}
1.2. Ma trận logic của quan hệ 2 ngơi:
Cho tập A có m phần tử
A = {a1,a2,...,am}
và tập B có n phần tử
B = {b1,b2,...,bn}
Ma trận logic của quan hệ R là ma trận cấp m * n với các phần tử r i,j xác định
như sau:
ri,j=

Page 8


Đề tài thực tập cơ sở
2. Ví dụ:
Ma trận biểu diễn quan hệ R={ (a,1), (a, 2), (b, 2), (c, 2)}

MR=
3. Thuật tốn kiểm tra các tính chất của quan hệ:
Cho R là một quan hệ trên tập A:



R được gọi là quan hệ có tính chất phản xạ nếu



R được gọi là quan hệ có tính chất đối xứng nếu



R được gọi là quan hệ có tính chất phản đối xứng nếu

nếu aRb thì bRa

nếu aRb và bRa thì a=b.


R được gọi là quan hệ có tính chất bắc cầu nếu

nếu

aRb vàbRa thì aRc.
3.1. Nhận biết các tính chất của quan hệ thông qua ma trận logic:
Ma trận của quan hệ trên cùng một tập là một ma trận vng.
- Tính phản xạ: Nếu ma trận có mọi phần tử trên đường chéo chính
bằng 1.
- Tính đối xứng: Nếu ma trận đối xứng.
- Tính phản đối xứng: Nếu ma trận có phần tử mij = 1 với i # j thì mji =0.
3.2 Chương Trình:
void nhap(int a[10][10],int n)
{

int i,j;
for(i=0;ifor(j=0;j{
printf("a[%d][%d]=",i,j);
SV thực hiện: Phan Văn Châu

Page 9


Đề tài thực tập cơ sở
scanf("%d",&a[i][j]);
}}

void doctep(int a[][10],int n)
{
FILE *f;
f=fopen("kiemtra.txt","rb");
for(int i=0;ifor(int j=0;jfscanf(f,"%d",&a[i][j]);
fclose(f);}

void xem(int a[10][10],int n)
{
int i,j;
for(i=0;i{
printf("\n");
for(j=0;j


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

void phanxa(int a[10][10],int n)
{

Page 10


Đề tài thực tập cơ sở
int i,j,d1=0;
for(i=0;ifor(j=0;jif((i==j) && (a[i][j]==1)) d1++;
if(d1==n) printf("\nma tran co tinh phan xa");
else printf("\nma tran khong phan xa");
}

void doixung(int a[10][10],int n)
{
int i,j,d2=0;
for(i=0;ifor(j=0;jif(a[i][j]!=a[j][i]) d2++;
if(d2==0) printf("\nma tran co tinh doi xung");
else printf("\nma tran khong doi xung");
}


void baccau(int a[10][10],int n)
{
int i,j,t,d3=0,d4=0;
for(i=0;ifor(j=0;jfor(t=0;tif(a[i][j]==a[j][t]==1) d3++;
if(a[i][t]==1) d4++;}

SV thực hiện: Phan Văn Châu

Page 11


Đề tài thực tập cơ sở
if(d3==d4) printf("\nma tran co tinh chat bac cau");
else printf("\nma tran k co tinh chat bac cau");
}

void main()
{
int a[10][10]; int n;
printf("\nnhap bac cua ma tran:");
scanf("%d",&n);
doctep(a,n);
xem(a,n);
phanxa(a,n);
doixung(a,n);
baccau(a,n);
getch();

}

3.3. Kết quả:

Page 12


Đề tài thực tập cơ sở
KẾT LUẬN
Công nghệ thông tin hiện đang là một ngành không thể thiếu trong cuộc sống.
Đặc biệt chúng ta đang hướng tới một nền công nghệ mới có nhiều ứng dụng quan
trọng phục vụ cho nhiều ngành nghề. Qua đợt thực tập lần này, em đã tích lũy được
khá nhiều kiến thức cho bản thân mình. Từ việc tìm kiếm thơng tin trên mạng Internet
và các kỹ năng, khả năng tư duy lập trình cơ bản để hoàn thiện yêu cầu đề ra. Các kiến
thức về ngôn ngữ C và cách tổ chức giải quyết yêu cầu của một bài toán cụ thể.
Tuy nhiên, do trình độ và thời gian cịn hạn chế nên những kết quả đạt được vẫn
chưa đầy đủ và còn thiếu sót. Rất mong nhận được sự đóng góp ý kiến của Thầy Cơ và
các bạn để đề tài được hồn thiện hơn.
Em xin chân thành cảm ơn Thầy giáo TS. Phan Lê Na đã giúp đỡ nhiệt tình
cho em hồn thành đề tài thực tập cơ sở này
Sinh viên thực tập

Phan Văn Châu

SV thực hiện: Phan Văn Châu

Page 13


Đề tài thực tập cơ sở

TÀI LIỆU THAM KHẢO
[1]. Bùi Thế Tâm, “Ngơn ngữ C và lập trình hướng đối tượng”, NXB Giao
Thông Vận Tải, năm 2006.
[2]. Quách Tuấn Ngọc, “Ngơn ngữ lập trình C”, NXB Giáo dục, 1998.
[3]. Cấu trúc dữ liệu và giải thuật- Nguyễn Trung Hồ
[4]. Tìm kiếm thông tin trên mạng Internet.

Page 14



×