Bài tập và thực hành 5
Chia sẻ bởi Trần Hữu Duy |
Ngày 10/05/2019 |
56
Chia sẻ tài liệu: Bài tập và thực hành 5 thuộc Tin học 11
Nội dung tài liệu:
Chương IV
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Chào mừng quý thầy cô đến dự giờ
Dữ liệu kiểu bản ghi (record) dùng để mô tả các đối tượng có cùng một số thuộc tính mà các thuộc tính có thể có các kiểu dữ liệu khác nhau.
Khái niệm: Dữ liệu kiểu bản ghi (record)
Câu 1:
Chương IV
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Cấu trúc khai báo kiểu bản ghi và cách tham chiếu đến các trường của bản ghi
TYPE= record
:;
…………………………
:;
end;
VAR
: ;
Câu 2:
Chương IV
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Kiểu dữ liệu xâu
Khái niệm:
Xâu là dãy các kí tự trong bộ mã ASCII
Ví dụ: ‘Lop 11C3’
Khai báo
Var: String[độ dài tối đa của xâu];
Var S: string[30];
p: string;
Nhập:
Var S: string[30];
write(‘Nhap vao xau:’);
readln(S);
Xuất:
write(S);
Length(S)
x:=Length(S);
Thao tác xử lí xâu
Bài 1 :
Nhập từ bàn phím một xâu. Kiểm tra xâu đó có phải là xâu đối xứng hay không ?
Input: Nhập vào xâu.
Output: Xuất ra kết quả có phải là xâu đối xứng
Ví dụ:
S:= ‘I was saw I’
I
I
1 2 3 4 5 6 7 8 9 10 11
I
I
11 10 9 8 7 6 5 4 3 2 1
Xâu đối xứng có tính chất ?
Đọc nó từ trái sang phải cũng thu được kết quả giống như đọc từ phải sang trái (còn được gọi là xâu Palindrome).
THUẬT TOÁN
Bước 1: Nhập Xâu S
Bước 2: Tính chiều dài xâu S
Bước 3: Tạo xâu P (xâu rỗng)
Bước 4: Với I = length(S) 1 thì P:=P+S[i].
Bước 5: Nếu S=P thì S là xâu đối xứng, ngược lại thì không phải là xâu đối xứng
var i, x: byte;
a, p: string;
BEGIN
write(‘Nhap vao xau:’);
readln(a);
x:= length(a);
p:= ‘’;
for i:=x downto 1 do
p:= p+a[i];
if a=p then
write(‘Xau la Palindrome’)
else
write(‘Xau khong la Palindrome’);
readln;
END.
{xac dinh do dai cua xau}
{khoi tao xau rong}
{tạo xau dao nguoc}
b) Hãy viết lại chương trình trên:
Trong đó không dùng biến xâu p
I
1 2 3 4 5 6 7 8 9 10 11
I
Bước 1: Giả sử xâu này là xâu đối xứng (palindrome).
Bước 2: So sánh các kí tự ở vị trí 111, 210,… nếu có kí tự khác nhau thì không phải là xâu đối xứng.
Tổng quát:
Chúng ta sẽ có bao nhiêu lần xét?
Chúng ta sẽ có n 2 lần xét
div
Uses crt;
Var s: string;
x,i: byte;
palin: Boolean;
Begin
Clrscr;
Write(` Nhap xau s=`);
readln(s);
x:=length(s);
palin:=true;
For i:=1 to (x div 2) do
begin
If s[i]<> s[x-i+1] then palin:=false;
break;
end;
If palin then write(`doi xung`)
else write(`khong doi xung`);
readln;
End.
Bài 2: Viết chương trình nhập từ bàn phím một xâu kí tự S và thông báo ra màn hình số lần xuất hiện của mỗi chữ cái tiếng Anh trong S
( không phân biệt chữ hoa hay chữ thường )
Input: Nhập vào xâu
Output: Xuất ra số lần xuất hiện của các chữ cái tiếng Anh trong xâu vừa nhập.
Chúng ta sẽ có bao nhiêu chữ cái trong tiếng Anh? Từ chữ cái A Z ;
Thuật toán
Bước 1: Nhập vào xâu S.
Bước 2: Tạo mảng A lưu trữ số lần xuất hiện của chữ cái tiếng Anh.
Bước 3: Khởi tạo cho từng phần tử mảng.
Bước 4: Nếu trong xâu S chữ cái A Z thì tăng giá trị của phần tử trong mảng.
Bước 5: Xuất ra mảng vừa tạo.
A B … H I J K …
Cho xâu S:
Tạo mảng A: Ghi nhận số lần xuất hiện của các kí tự trong xâu S
1 2 3 4 5 6 7
Var A: array[
..
‘A’.. ‘Z’
A
] of byte;
A[‘H’]=2 có nghĩa là có 2 kí tự ‘H’ trong xâu S.
Program bai02;
Uses crt;
Var a: array[`A`.. `Z`] of byte;
s: string;
i: byte;
c: char;
Begin
clrscr;
write(`nhap xau :`);
readln(s);
for c:=`A` to `Z` do a[c]:=0;
for i:=1 to length(s) do
begin
s[i]:=upcase(s[i]);
if (s[i]>=`A`) and (s[i]<=`Z`) then
a[s[i]]:=a[s[i]]+1;
end;
for c:=`A` to `Z` do
if a[c]<>0 then
writeln( `So lan xuat hien`, c,`: `,a[c]);
readln;
End.
Các thao tác xử lí xâu
Thủ tục delete(St, vt, n);
Thủ tục insert(St1, St2, vt);
Hàm length(St);
Hàm Pos(St1, St2);
Bài 3: Nhập vào từ bàn phím một xâu. Thay thế tất cả các cụm kí tự ‘anh’ bằng cụm kí tự ‘em’.
Input: Nhập vào một xâu
Output: Xuất ra xâu kết quả đã thay thế cụm từ ‘anh’ bằng cụm từ ‘em’
Ví dụ: S:= ‘anh yeu truong anh’
‘em yeu truong em’
1 … .. 16 17 18
Bước 1: Tìm vị trí bắt đầu của xâu ‘anh’
Bước 2: Xóa xâu ‘anh’ vừa tìm thấy
Bước 3: Chèn xâu ‘em’ vào xâu S tại vị trí trước đây xuất hiện xâu ‘anh’(lặp lại các bước trên cho đến khi không còn xâu ‘anh’)
Bước 4: In ra xâu S
1 … .. 15 16
Uses crt;
Var s: string;
i: byte;
Begin
Clrscr;
Write(`Nhap xau S:`); Readln(s);
i:=Pos(`anh`,s);
While i<> 0 do
Begin
Delete(s,i,3);
Insert(`em`,s,i);
I:=Pos(`anh`,s);
End;
writeln(S);
readln;
End.
Những kiến thức cần nắm :
Cách tạo một xâu mới từ xâu ban đầu.
Đếm số lần xuất hiện của một chữ cái trong toàn bộ văn bản.
Tìm kiếm và thay thế một từ bằng một từ khác trong toàn bộ văn bản.
Những kiến thức cần chuẩn bị:
Kiến thức về kiểu dữ liệu có cấu trúc.
Câu hỏi và bài tập trang 79 (SGK).
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Chào mừng quý thầy cô đến dự giờ
Dữ liệu kiểu bản ghi (record) dùng để mô tả các đối tượng có cùng một số thuộc tính mà các thuộc tính có thể có các kiểu dữ liệu khác nhau.
Khái niệm: Dữ liệu kiểu bản ghi (record)
Câu 1:
Chương IV
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Cấu trúc khai báo kiểu bản ghi và cách tham chiếu đến các trường của bản ghi
TYPE
…………………………
end;
VAR
Câu 2:
Chương IV
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Kiểu dữ liệu xâu
Khái niệm:
Xâu là dãy các kí tự trong bộ mã ASCII
Ví dụ: ‘Lop 11C3’
Khai báo
Var
Var S: string[30];
p: string;
Nhập:
Var S: string[30];
write(‘Nhap vao xau:’);
readln(S);
Xuất:
write(S);
Length(S)
x:=Length(S);
Thao tác xử lí xâu
Bài 1 :
Nhập từ bàn phím một xâu. Kiểm tra xâu đó có phải là xâu đối xứng hay không ?
Input: Nhập vào xâu.
Output: Xuất ra kết quả có phải là xâu đối xứng
Ví dụ:
S:= ‘I was saw I’
I
I
1 2 3 4 5 6 7 8 9 10 11
I
I
11 10 9 8 7 6 5 4 3 2 1
Xâu đối xứng có tính chất ?
Đọc nó từ trái sang phải cũng thu được kết quả giống như đọc từ phải sang trái (còn được gọi là xâu Palindrome).
THUẬT TOÁN
Bước 1: Nhập Xâu S
Bước 2: Tính chiều dài xâu S
Bước 3: Tạo xâu P (xâu rỗng)
Bước 4: Với I = length(S) 1 thì P:=P+S[i].
Bước 5: Nếu S=P thì S là xâu đối xứng, ngược lại thì không phải là xâu đối xứng
var i, x: byte;
a, p: string;
BEGIN
write(‘Nhap vao xau:’);
readln(a);
x:= length(a);
p:= ‘’;
for i:=x downto 1 do
p:= p+a[i];
if a=p then
write(‘Xau la Palindrome’)
else
write(‘Xau khong la Palindrome’);
readln;
END.
{xac dinh do dai cua xau}
{khoi tao xau rong}
{tạo xau dao nguoc}
b) Hãy viết lại chương trình trên:
Trong đó không dùng biến xâu p
I
1 2 3 4 5 6 7 8 9 10 11
I
Bước 1: Giả sử xâu này là xâu đối xứng (palindrome).
Bước 2: So sánh các kí tự ở vị trí 111, 210,… nếu có kí tự khác nhau thì không phải là xâu đối xứng.
Tổng quát:
Chúng ta sẽ có bao nhiêu lần xét?
Chúng ta sẽ có n 2 lần xét
div
Uses crt;
Var s: string;
x,i: byte;
palin: Boolean;
Begin
Clrscr;
Write(` Nhap xau s=`);
readln(s);
x:=length(s);
palin:=true;
For i:=1 to (x div 2) do
begin
If s[i]<> s[x-i+1] then palin:=false;
break;
end;
If palin then write(`doi xung`)
else write(`khong doi xung`);
readln;
End.
Bài 2: Viết chương trình nhập từ bàn phím một xâu kí tự S và thông báo ra màn hình số lần xuất hiện của mỗi chữ cái tiếng Anh trong S
( không phân biệt chữ hoa hay chữ thường )
Input: Nhập vào xâu
Output: Xuất ra số lần xuất hiện của các chữ cái tiếng Anh trong xâu vừa nhập.
Chúng ta sẽ có bao nhiêu chữ cái trong tiếng Anh? Từ chữ cái A Z ;
Thuật toán
Bước 1: Nhập vào xâu S.
Bước 2: Tạo mảng A lưu trữ số lần xuất hiện của chữ cái tiếng Anh.
Bước 3: Khởi tạo cho từng phần tử mảng.
Bước 4: Nếu trong xâu S chữ cái A Z thì tăng giá trị của phần tử trong mảng.
Bước 5: Xuất ra mảng vừa tạo.
A B … H I J K …
Cho xâu S:
Tạo mảng A: Ghi nhận số lần xuất hiện của các kí tự trong xâu S
1 2 3 4 5 6 7
Var A: array[
‘A’.. ‘Z’
A
] of byte;
A[‘H’]=2 có nghĩa là có 2 kí tự ‘H’ trong xâu S.
Program bai02;
Uses crt;
Var a: array[`A`.. `Z`] of byte;
s: string;
i: byte;
c: char;
Begin
clrscr;
write(`nhap xau :`);
readln(s);
for c:=`A` to `Z` do a[c]:=0;
for i:=1 to length(s) do
begin
s[i]:=upcase(s[i]);
if (s[i]>=`A`) and (s[i]<=`Z`) then
a[s[i]]:=a[s[i]]+1;
end;
for c:=`A` to `Z` do
if a[c]<>0 then
writeln( `So lan xuat hien`, c,`: `,a[c]);
readln;
End.
Các thao tác xử lí xâu
Thủ tục delete(St, vt, n);
Thủ tục insert(St1, St2, vt);
Hàm length(St);
Hàm Pos(St1, St2);
Bài 3: Nhập vào từ bàn phím một xâu. Thay thế tất cả các cụm kí tự ‘anh’ bằng cụm kí tự ‘em’.
Input: Nhập vào một xâu
Output: Xuất ra xâu kết quả đã thay thế cụm từ ‘anh’ bằng cụm từ ‘em’
Ví dụ: S:= ‘anh yeu truong anh’
‘em yeu truong em’
1 … .. 16 17 18
Bước 1: Tìm vị trí bắt đầu của xâu ‘anh’
Bước 2: Xóa xâu ‘anh’ vừa tìm thấy
Bước 3: Chèn xâu ‘em’ vào xâu S tại vị trí trước đây xuất hiện xâu ‘anh’(lặp lại các bước trên cho đến khi không còn xâu ‘anh’)
Bước 4: In ra xâu S
1 … .. 15 16
Uses crt;
Var s: string;
i: byte;
Begin
Clrscr;
Write(`Nhap xau S:`); Readln(s);
i:=Pos(`anh`,s);
While i<> 0 do
Begin
Delete(s,i,3);
Insert(`em`,s,i);
I:=Pos(`anh`,s);
End;
writeln(S);
readln;
End.
Những kiến thức cần nắm :
Cách tạo một xâu mới từ xâu ban đầu.
Đếm số lần xuất hiện của một chữ cái trong toàn bộ văn bản.
Tìm kiếm và thay thế một từ bằng một từ khác trong toàn bộ văn bản.
Những kiến thức cần chuẩn bị:
Kiến thức về kiểu dữ liệu có cấu trúc.
Câu hỏi và bài tập trang 79 (SGK).
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Trần Hữu Duy
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)