Vua Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
kinh doanh, bán hàng, tư vấn, bảo hiểm Những cá nhân, tổ chức, đại lý,muốn bán, hợp đồng bảo hiểm
Wednesday, January 16, 2019



BÀI TP 3
Nhp vào mt xâu s và đếm xem nó có bao nhiêu t. T là mt dãy các kí t, cách nhau bi du cách?
HƯỚNG DN
Cách đếm t đơn gin nht là đếm du cách: nếu s[i] là kí t khác cách và s[i-1] là kí t cách thì chng t s[i] là v trí bt đầu ca mt t. Chú ý là t đầu tiên ca xâu không có du cách đứng trước.
Chương trình:
var s : string;
{Hàm đếm s t ca mt xâu}
func­tion so­tu(s : string) : in­te­ger;
var i, dem : in­te­ger;
be­gin
{cng thêm du cách phía trước xâu để đếm c t đầu tiên}
     s := ' ' + s; dem := 0;
     for i := 2 to length(s) do {s[i] là v trí bt đầu 1 t}
         if (s[i-1]=' ') and (s[i]<>' ') then dem := dem + 1;
     so­tu := dem;
end;
BE­GIN
     write('Nhap vao 1 xau:');
     readln(s);
     writeln('So tu trong xau la:',so­tu(s));
     readln;
END.
BÀI TP 4
Nhp vào mt xâu s và in ra các t ca nó (T là mt dãy các kí t, cách nhau bi du cách). Xâu có bao nhiêu tđối xng?
HƯỚNG DN
Có nhiu cách để tách mt xâu thành các t. Cách đơn gin nht tiến hành như sau:
1)      B qua các du cách cho đến khi gp mt kí t khác cách (hoc hết xâu).
2)      Ghi các kí t tiếp theo vào xâu tm cho đến khi gp du cách hoc hết xâu, khi đó ta được 1 t.
3)      Nếu chưa hết xâu thì quay li bước 1.
Mi khi tìm được mt t, ta ghi luôn nó ra màn hình, nếu t đó là đối xng thì tăng biến đếm. Ta cũng có th lưu các t tách được vào mt mng nếu bài tp yêu cu dùng đến nhng t đó trong các câu sau.
Chương trình:
var s : string;
    dem : in­te­ger;
{Hàm kim tra t đối xng}
func­tion doix­ung(x : string) : boolean;
var y : string;
    i : in­te­ger;
be­gin
     y := '';
     for i := length(x) down­to 1 do y := y + x[i];
     if x=y then doix­ung := true else doix­ung := false;
end;
{Th tc thc hin tách t}
pro­ce­dure tach;
var i, len : in­te­ger;
    t : string;
be­gin
     writeln('Cac tu trong xau:');
     i := 1; len := length(s);
     re­peat
{B1: b qua các du cách cho đến khi hết xâu hoc gp 1 kí t khác cách:}
           while (s[i]=' ') and (i<=len) do inc(i);
           if i>=len then break; {nếu hết xâu thì dng}
           t := '';                             {t là biến tm lưu t đang tách}
{B2: ly các kí t khác cách đưa vào biến tm cho đến khi hết xâu hoc gp 1 kí t cách:}
           while (s[i]<>' ') and (i<=len) do be­gin
                 t := t + s[i];
                 inc(i);
           end;
{in ra t va tách được và kim tra đối xng}
           writeln(t);
           if doix­ung(t) then inc(dem);
     un­til i >= len;
     writeln('So tu doi xung trong xau:',dem);
end;
(************************************************)
BE­GIN
     write('Nhap vao 1 xau:');
     readln(s);
     tach;
END.
BÀI TP 5
Mt s nguyên gi là palin­drom nếu nó đọc t trái sang cũng bng đọc t phi sang. Ví d 121 là mt s palin­drom. Nhp mt dãy n phn t nguyên dương t bàn phím, 5<= n<=20 và các phn t có 2 đến 4 ch s. In ra các s là palin­drom trong dãy.
HƯỚNG DN
Mt s là palin­drom thì xâu tương ng ca nó là xâu đối xng. Ta s xây dng mt hàm kim tra mt s có phi là palin­drom không bng cách chuyn s đó thành xâu và kim tra xâu đó có đối xng không?
Chương trình:
us­es crt;
var  n : in­te­ger;
     a : ar­ray[1..20] of in­te­ger;
{Th tc nhp d liu}
pro­ce­dure nhap;
var i : in­te­ger;
be­gin
     clrscr;
     re­peat
           write('n= '); readln(n);
           if (n<=20) and (n>=5) then break; {nếu đã tho mãn thì thoát khi vòng lp}
           writeln('Yeu cau 5<=n<=20. Nhap lai!');
     un­til false;
     for i := 1 to n do
          re­peat
                write('A[',i,']='); readln(a[i]);
                if (a[i]<=9999) and (a[i]>=10) then break; {a[i] có 2 đến 4 ch s}
                writeln('Yeu cau cac phan tu co 2 den 4 chu so. Nhap lai!');
          un­til false;
end;
{Hàm kim tra bng các kim tra xâu đối xng}
func­tion palin­drom(k : in­te­ger): boolean;
var x,y : string;
    i : in­te­ger;
be­gin
     str(k,x);        {chuyn k thành xâu x}
     y := '';
     for i := length(x) down­to 1 do y := y + x[i];
{nếu x là đối xng thì k là palin­drom}
     if x=y then palin­drom := true else palin­drom := false;
end;
{In kết qu:}
pro­ce­dure palin;
var i : in­te­ger;
be­gin
     writeln('Cac so la palin­drom trong day:');
     for i := 1 to n do
         if palin­drom(a[i]) then writeln(a[i]);
     readln;
end;
(* Chương trình chính *)
BE­GIN
     nhap;
     palin;
END.
tcaviet@gmail.com

0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts