Bài tập  /  Bài đang cần trả lời

Giải Tin học 11 Bài tập và thực hành 5 - Bài tập và thực hành 5

1 trả lời
Hỏi chi tiết
549
0
0
Nguyễn Thị Thảo Vân
07/04/2018 12:24:41

Bài tập và thực hành 5

1. Mục đích, yêu cầu

Làm quen với việc tìm kiếm, thay thế và biến đổi xâu.

2. Nội dung

Bài 1 (trang 73 sgk Tin 11): Nhập vào 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. Xâu đối xứng có tính chất: đọc nó từ phải sang trái cũng thu được kết quả giống như đọc từ trái sang phải (còn được gọi là xâu palindrome).

a) Hãy chạy thử chương trình sau:

 program vd2; uses crt; var 	i,x:byte; 	a,p:string; begin 	clrscr; 	write('nhap 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 phai la palindrome'); 	readkey; end. 
Giải bài tập Tin học 11 | Để học tốt Tin học 11

b) Hãy viết lại chương trình tên, trong đó không dùng biến xâu p.

Do xâu đảo ngược cũng chính là xâu viết xuôi nên

 Xau[1]=Xau[length(xau)] Xau[2]=Xau[length(xau-1)] ….. 

Vậy ta có thể làm theo cách sau:

Sử dụng biến I để đếm xuôi rồi so sánh với xau[length(xau)-i] nếu khác nhau thì kết luận luôn không phải là palindrome. Lặp đến khi nào i> length(xau)-I +1(Vì duyệt tiếp chỉ là sự lặp lại)

 program vd2; uses crt; var 	a:string; 	i:integer; 	p:boolean; begin 	clrscr; 	write('nhap xau:'); 	readln(a); 	i:=1; 	p:=true; 	while (i<length(a)-i+1)  do 	begin 	if a[i]<>a[length(a)-i+1] then 	begin 	break; 	end; 	i:=i+1; 	end; 	if p 	then 	writeln('xau la palindrome') 	else 	writeln('xau khong phai la palindrome'); 	readkey; end. 

Cách này sẽ tiết kiệm được chi phí hơn cách trước do chỉ cần duyệt khoảng 1/2 xâu.

Giải bài tập Tin học 11 | Để học tốt Tin học 11

Bài 2 (trang 73 sgk Tin 11): Viết chương tì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).

Trả lời:

Phân tích:

Ta sẽ tạo một mảng gồm 26 kí tự để lưu trữ số lần xuất hiện của các chữ cái trong bảng chữ cái tiếng Anh. Phần từ đầu tiên sẽ lưu số lần xuất hiện của kí tự 'A' (do đề bài yêu cầu không phân biệt chữ thường với chữ hoa). Để lấy vị trí mảng của một kí tự nào đó ta dùng câu lệnh:

 ord(upcase(a[i]))-ord('A')

ord sẽ lấy giá trị tương ứng của kí tự trong bảng mã ASCII sau đó trừ đi giá trị của 'A' trong bảng ASCII .

Ví dụ :

Mã ASCII của 'A' là 65 thì vị trí trong mảng của nó là 65-65 =0

Mã ASCII của 'A' là 66 thì vị trí trong mảng của nó là 66-65 =1

 program vd2; uses crt; var 	a:string; 	gt:array[0..26] of integer; 	i:integer; begin 	clrscr; 	write('nhap xau:'); 	readln(a); 	for i:=0 to 25 do 	gt[i]:=0; 	for i:=1 to length(a) do 	begin 	gt[ord(upcase(a[i]))-ord('A')]:=gt[ord(upcase(a[i]))-ord('A')]+1; 	end; 	for i:=0 to 25 do 	if gt[i]>0 then 	writeln(chr(ord('A')+i),':',gt[i]); 	readkey; end. 

Kết quả:

Giải bài tập Tin học 11 | Để học tốt Tin học 11

Bài 3 (trang 73 sgk Tin 11): 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'.

Trả lời:

Ta sẽ tìm vị trí mà từ 'anh' xuất hiện đầu tiên bằng hàm pos sau đó xóa từ 'anh' đi rồi chèn từ 'em' vào.

Đến khi nào xâu ban đầu không còn từ 'anh' nữa thì dừng.

 program vd2; uses crt; var 	a:string; 	vt:integer; begin 	clrscr; 	write('nhap xau:'); 	readln(a); 	while pos('anh',a)>0 do 	begin 	vt:=pos('anh',a); 	delete(a,vt,3); 	insert('em',a,vt); 	end; 	write(a); 	readkey; end. 
Giải bài tập Tin học 11 | Để học tốt Tin học 11

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo