Bài tập Turbo Pascal - Kiểu Xâu - Phần 6

Đề bài: hàm Upcase(s) trong Turbo Pascal có tác dụng là chuyển tất cả các kí tự in thường trong s thành kí tự in hoa, chúng ta sẽ viết một chương trình có tác dụng ngược lại, đó là chuyển tất cả các kí tự in hoa thành kí tự thường.
Hàm lower

TEST

Input: 'KHANH98.blogspot.COM'
Output: 'khanh98.blogspot.com'

Ý tưởng

Đối với cách một ta tiến hành như sau:
Thực hiện một vòng lặp từ đầu tới cuối xâu và kiểm tra xem kí tự s[i] vừa duyệt qua có phải là kí tự in hoa hay không, trong cách này ta sẽ dùng bảng mã ASCII để kiểm tra. Kí tự in hoa là kí tự có mã thâp phân từ 65 đến 90, để biết được mã thập phân của kí tự ta dùng hàm ord(s[i]).
Nếu đó là kí tự in hoa thì chúng ta sẽ chuyển nó về kí tự in thường, mã thập phân của kí tự in thường tương ứng bằng mã thập phân của kí tự in hoa cộng thêm 32 (ord(s[i]) + 32), chúng ta dùng hàm chr(ord(s[i]) + 32) để lấy kí tự in thường tương ứng và gán nó vào s[i].

Lưu ý: Ngoài ra bạn cũng có thể dùng hàm Upcase() để kiểm tra xem đó có phải là kí tự in hoa hay không, tuy nhiên nếu kí tự đó là số,dấu phẩy,dấu chấm... nói chung là các kí tự đặc biệt thì sẽ không thực hiện được với cách trên. Ví dụ : Upcase('.')='.' cho nên dấu chấm sẽ được thay thế bởi một kí tự khác nào đó.

Chương trình

{Bai tap turbo pascal - kieu xau - phan 6}
Program lower;
uses crt;
var s: string;

function lower(s:string): string;
var i:integer;
begin
{cach 1: dung thu tu ma thap phan cua cac ki tu trong bang ma ASCII de kiem tra xem s[i] co phai la ki tu in hoa hay khong}
for i:= 1 to length(s) do
   if (ord(s[i]) >= 65) and (ord(s[i])<=90) then
      s[i]:=chr(ord(s[i])+32);
lower:=s;
end;

begin
clrscr;
write('Nhap xau s: ');
readln(s);
writeln(lower(s));
readln;
end.

Comments