Bài tập Turbo Pascal kiểu xâu - Phần 3

Đề bài: Nhập vào một xâu kí tự s, hãy viết chương trình in hoa tất cả các chữ cái đầu tiên trong mỗi chữ.

#TEST

Input: 'bUI qUOC kHANH'
Output: 'BUI QUOC KHANH'

Input: 'Bui quoc khanh'
Output: 'Bui Quoc Khanh'

#Chương trình

{Bai tap turbo pascal kieu xau phan 3 - khanh blog}
Program string3;
uses crt;
var s: string;
i: integer;
begin
clrscr;
write('Nhap xau: ');readln(s);
s:=' '+s;
for i:=1 to length(s) do
 if (s[i]=' ')and(s[i+1]<>' ') then
  s[i+1]:=upcase(s[i+1]);
delete(s,1,1);
write(s);
readln;
end.

Bài này cũng khá là đơn giản, mỗi chữ trong xâu được phân cách nhau bởi một dấu cách. Cho nên ta chỉ việc thực hiện một vòng lặp từ 1 tới length(s), nếu ta gặp được một phần tử của s là một dấu cách (s[i]=' ') và phần tử tiếp theo không phải là một dấu cách (s[i+1]<>' ') thì ta sẽ in hoa phần tử tiếp theo đó (s[i+1]:=upcase(s[i+1])).
Lưu ý: Đầu tiên trong chương trình ta phải thêm một dấu cách vào đầu xâu s (s:=' '+s), cuối chương trình ta cũng phải xóa đi một phần tử đầu tiên trong xâu (delete(s,1,1)). Lí do khá đơn giản, ví dụ xâu s='bUI khanh': Ta sẽ thực hiện vòng lặp từ 1 tới length(s), tuy nhiên trước kí đầu tiên trong xâu lại không có dấu cách nào nên ta sẽ thêm vào, khi đó s=' bUI khanh'. Sau khi thực hiện chương trình xong thì xâu là s=' BUI Khanh', có một dấu cách ở đầu xâu mà ta đã thêm vào, bây giờ sau khi thức hiện xong thì nó bị thừa nên ta xóa nó đi (delete(s,1,1)).

Comments