1. Trang chủ
  2. » Giáo án - Bài giảng

chuyên đề tin học chương 8 dữ liệu kiểu file

6 303 3

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 8 dữ liệu kiểu file
Trường học University of Information Technology
Chuyên ngành Computer Science
Thể loại Chuyên đề
Thành phố Ho Chi Minh City
Định dạng
Số trang 6
Dung lượng 40,5 KB

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

Nội dung

Biến Ngay có kiểu DateE, kiểu này có 7 giá trị Sunday,Monday ,Tuesday, Wednesday, Thursday, Friday, Saturday.. 3 Cách xử dụng biến kiểu Liệt kê : + Giá trị của biến có thể nhận được thôn

Trang 1

Chuyªn Tin 10

CHƯƠNG 8 : DỮ LIỆU KIỂU LIỆT KÊ, KIỂU ĐOẠN CON,

DỮ LIỆU KIỂU TẬP HỢP- DỮ LIỆU KIỂU BẢN GHI

I / Dữ liệu kiểu liệt kê ( Enumerated ):

1 ) Khai báo kiểu :

Type Tên_kiểu = (danh sách tên các giá trị );

Var Tên_biến : Tên_Kiểu;

Trong đó tên giá trị phải đặt theo đúng qui cách của Tên , thí dụ như : Không bắt đầu bằng chữ số ,

không chứa kí tự #, kí tự ngoặc ‘(‘ , ‘)’, kí tự dấu trừ ‘-’,kí tự dấu cách ‘ ‘,

2 ) Thí dụ :

Type ColorE = (Red, Blue,Green,Yellow);

DateE = (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);

Var Mau : ColorE;

Ngay : DateE;

Biến Mau có kiểu ColorE , kiểu này chỉ có 4 giá trị Red, Blue,Green,Yellow

Biến Ngay có kiểu DateE, kiểu này có 7 giá trị Sunday,Monday ,Tuesday, Wednesday, Thursday, Friday, Saturday

3) Cách xử dụng biến kiểu Liệt kê :

+ Giá trị của biến có thể nhận được thông qua lệnh gán Thí dụ : Mau := Green;

+ Muốn hiện giá trị của biến liệt kê trên màn hình phải qua thủ tục hiện gián tiếp

Thí dụ

Procedure Hiện (Mau : ColorE);

Begin

Case Mau of

Red : Witeln(‘Red ‘);

Blue : Witeln(‘Blue ‘);

Green : Witeln(‘Green ‘);

Yellow: Witeln(‘Yellow ‘);

End;

End;

+ Kiểu liệt kê cũng thuộc loại vô hướng đếm được (như Boolean,Char,Integer,Byte, Word ) vì vậy

có thể xử dụng các hàm Ord,Succ,Pred

Thí dụ :

Trong các kiểu nêu trên ta có : Ord(Red) =0, Succ(Red)=Blue, Pred(Tuesday)= Monday .Giá trị của biểu thức Pred(Friday)=Saturday là False Giá trị của biểu thức Pred(Friday)=Thursday là True

+ Có thể lấy 1 giá trị của danh sách các giá trị thông qua Tên_kiểu Thí dụ : ColorE(0) là Red , DateE(1)=Monday

II / Dữ liệu kiểu đoạn con ( Sub Range ):

III / Dữ liệu kiểu tập hợp ( Set Of ):

IV / Dữ liệu kiểu bản ghi ( Kiểu Record):

250

Trang 2

Chuyªn Tin 10

Bài 1 :

Bài toán “Rủ nhau đi cắm trại “ : Quan hệ rủ nhau đi cắm trại , cho bằng biểu thức : Thí dụ : AB>CEF Ta hiểu các biểu thức này có nghĩa là : Mỗi kí tự ( Khác dấu ‘>‘) là tên một học sinh Khi có đủ các học sinh ở vế trái của biểu thức thì sẽ rủ thêm được các học sinh ở vế phải tham gia trại Cho biết nhóm đầu tiên khởi xướng là FC Các quan hệ và nhóm khởi xướng cho trong File

‘CAMTRAI.TXT’ tổ chức :

+ Dòng đầu là số N là số quan hệ rủ nhau

+ N dòng tiếp theo , Mỗi dòng là 1 quan hệ

+ Dòng cuối cùng là nhóm khởi xướng

Hỏi những học sinh nào sẽ đi cắm trại

File CAMTRAI.TXT

5

AB>CEF

C>AD

EG>D

CD>B

D>E

FC

Bài 2 :

Cho N tập hợp số nguyên ( Kiểu Byte) (2<=N<=10) Nếu 2 tập hợp có chung ít nhất 1 phần tử , ta nói rằng chúng có đường đi sang nhau ( liên thông nhau ) Trong N tập hợp đã cho ,hãy tìm mọi đường đi từ một tập thứ nhất tới tập thứ hai ( có thể thông qua các tập khác )

Dữ liệu cho từ File ‘DUONGDI.TXT’ Tổ chức như sau :

+ Dòng đầu là số N

+ N dòng tiếp theo ,dòng i gồm các số nguyên của tập i , hai số liền nhau cách nhau dấu cách ( #32 )

BÀI CHỮA

Bài 1 :

Uses Crt;

Const Max = 20;

Fi = 'Camtrai.txt';

Type KTH = Set of char;

KMTH = Array[1 Max] of KTH;

KDD = Array[1 Max] Of Boolean;

Var i,N,sn : Byte;

KQ : KTh;

P,T : KMTH;

D : KDD;

S : String;

Ok : Boolean;

Procedure Hien(x : KTH);

Var ch : Char;

Begin

For ch:='A' to 'Z' do

If ch in x then Write(ch);

End;

Procedure Sach(Var S : String);

Var i : Byte;

Begin

i := 1;

251

Trang 3

Chuyªn Tin 10

While i<= Length(S) do

Begin

If S[i]=' ' then

Begin

Delete(S,i,1);

Dec(i);

End;

Inc(i);

End;

End;

Procedure Nhap;

Var F : Text;

phu,k : Byte;

vt,S : String;

Begin

Assign(F,Fi);

Reset(F);

Readln(F,N);

For i:=1 to N do

Begin

Readln(F,S);

Sach(S);

phu := Pos('>',S);

Vt := Copy(S,1,phu-1);

T[i] := [];

For k := 1 to Length(Vt) do T[i] := T[i]+[Vt[k]];

S := Copy(S,phu+1,Length(S) );

P[i] := [];

For k := 1 to Length(S) do P[i] := P[i]+[S[k]]; Hien(T[i]);Write('>');

Hien(P[i]);

Writeln;

End;

Readln(F,S);

Close(F);

KQ := [];

For i:=1 to Length(S) do

KQ := KQ+[S[i]];

Sn := Length(S);

Hien(KQ);

Writeln;

End;

Procedure Ketnap(i : Byte);

Var ch : Char;

Begin

If (T[i]<=KQ) and (Not D[i]) then

Begin

KQ := KQ+P[i];

D[i] := True;

Ok := True;

252

Trang 4

Chuyªn Tin 10

End;

End;

Procedure Duyet;

Var i : Byte;

Begin

FillChar(D,Sizeof(D),False);

Ok := True;

While Ok do

Begin

Ok := False;

For i:=1 to N do Ketnap(i);

End;

End;

BEGIN

Clrscr;

Nhap;

Duyet;

Hien(KQ);

Readln

END

Bài 2 :

{Phuong phap de qui + Vet can.Co the them d/k : do dai duong di L=hang so} Uses Crt;

Const Max = 20;

Fi = 'Duongdi.txt';

Fo = 'Duongdi.out';

Type KTH = Set of Byte;

KMTH = Array[1 Max] of KTH;

KDD = Array[1 Max] of Boolean;

KNG = Array[1 Max] Of Byte;

Var TH : KMTH;

X : KTH;

CX : KDD;

NG : KNG;

N,L : Byte;

Dem : LongInt;

Procedure Hien(X : KTH);

Var i : Integer;

Begin

For i:=0 to 255 do If i in X then Write(i:4);

Writeln;

End;

Procedure Nhap;

Var i,k : Byte;

x : Byte ;

F : Text;

Begin

Assign(F,Fi);

Reset(F);

253

Trang 5

Chuyªn Tin 10

Readln(F,N);

i := 1;

While Not SeekEof(F) do

Begin

TH[i] := [];

While not SeekEoLn(F) do

Begin

Read(F,x);

TH[i] := TH[i]+[x];

End;

Readln(F);

Hien(TH[i]);

Inc(i);

End;

Close(F);

End;

Function C(i,j : Byte): Boolean;

Begin

If ((TH[i]*TH[j])<>[]) then C := True Else C:= False; End;

Var F : Text;

Procedure Thong(i,j :Byte);

Var k,h : Byte;

Begin

For k:=1 to N do

If (k<>i) then

If (CX[k]) and C(NG[L],k) then

Begin

Inc(L);

NG[L] := k;

CX[k] := False;

If (k<>j) then Thong(k,j) Else

Begin

Inc(dem);

Write(F,'Duong di ',dem,' : ');

Write( 'Duong di ',dem,' : ');

For h:=1 to L do Write(NG[h]:4);

For h:=1 to L do Write(F,NG[h]:4); Writeln;Writeln(F);

End;

Dec(L);

CX[k] := True;

End;

End;

Procedure Tim;

Var i,j : Byte;

Begin

Assign(F,Fo);

Rewrite(F);

Dem := 0;

For i :=1 to N do

For j := 1 to N do

254

Trang 6

Chuyªn Tin 10

Begin

FillChar(CX,Sizeof(CX),True); FillChar(NG,Sizeof(NG),0);

L := 1;

NG[L] := i;

CX[i] := False;

Thong(i,j);

End;

Close(F);

End;

BEGIN

Clrscr;

Nhap;

Tim;

Readln

END

255

Ngày đăng: 07/09/2014, 07:11

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w