CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
Bài 11: Kiểu mảng
Cho mảng a gồm n phần tử n<=15. giá="" trị="" từng="" phần="" tử="" là="" số="" nguyên.="" thực="" hiện="" các="" chương="" trình="">=15.>
1. Tính tổng các phần tử trong mảng
Input A = 1 4 5 6 7
Output S = 23
• Xác định bài toán:
- Input: mảng a
- Output: tổng các phần tử trong mảng.
• Thuật toán:
- B1: Nhập n, a1,a2, , an
- B2: i 1, s 0
- B3: s s + ai
- B4: i i + 1
- B5: nếu i > n, đưa ra S và kết thúc.
- B6: quay lại bước 3.
CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC Bài 11: Kiểu mảng Cho mảng a gồm n phần tử n<=15. Giá trị từng phần tử là số nguyên. Thực hiện các chương trình sau: Tính tổng các phần tử trong mảng Input A = 1 4 5 6 7 Output S = 23 Xác định bài toán: Input: mảng a Output: tổng các phần tử trong mảng. Thuật toán: B1: Nhập n, a1,a2, , an B2: iß 1, s ß 0 B3: s ß s + ai B4: i ßi + 1 B5: nếu i > n, đưa ra S và kết thúc. B6: quay lại bước 3. Chương trình: program tinhtong; uses crt; var n,i:byte; a:array[1..15] of integer; s:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; s:=0; for i:=1 to n do s:=s+a[i]; writeln('tong cac phan tu trong mang la: ',s); readln end. Tính tổng các phần tử âm của mảng Input A = 1 -4 5 6 -7 Output S = -11 Xác định bài toán: Input: mảng a Output: tổng các phần tử âm trong mảng. Thuật toán: B1Nhập n, a1,a2, , an B2: iß 1, s ß 0 B3: nếu ai < 0 thì s ß s + ai B4: i ßi + 1 B5: nếu i > n, đưa ra S và kết thúc. B6: quay lại bước 3. Chương trình: program tongam; uses crt; var n,i:byte; a:array[1..15] of integer; s:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; s:=0; for i:=1 to n do if a[i] < 0 then s:=s+a[i]; writeln('tong cac phan tu trong mang la: ',s); readln end. Tính tổng và trung bình cộng của các phần tử chẵn của mảng. Input A = 1 -4 5 6 -7 Output S = 2, TB = 1 Xác định bài toán: Input: mảng a Output: tổng các phần tử chẵn và TB cộng của các phần tử chẵn trong mảng. Thuật toán: B1Nhập n, a1,a2, , an B2: iß 1, s ß 0, d ß 0 B3: nếu ai chia hết cho 2 thì s ß s + ai , dß d+1 B4: i ßi + 1 B5: nếu i > n, tính TB ß s/d, đưa ra S và TB rồi kết thúc. B6: quay lại bước 3. Chương trình: program tongchan; uses crt; var n,i:byte; a:array[1..15] of integer; s:integer; TB: real; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; s:=0; d:=0; for i:=1 to n do if a[i] mod 2 = 0 then begin s:=s+a[i]; d:=d+1; end; TB:= s/d; writeln('tong cac phan tu trong mang la: ',s); writeln(‘trung binh cac phan tu chan la: ‘,TB); readln end. Tìm phần tử có giá trị lớp nhất của mảng. Input A = 1 -4 5 6 -7 Output Max = 6, vt = 4 Xác định bài toán: Input: mảng a Output: phần tử có giá trị lớn nhất trong mảng, và vị trí của nó Thuật toán: B1Nhập n, a1,a2, , an B2: iß 2, Max ß a1 , cs ß 1 B3: nếu i > n thì đưa ra Max, cs và kết thúc B4: nếu ai > Max, thì Max ß ai , cs ß i B5: i ß i + 1, quay lại bước 3. Chương trình: program timmax; uses crt; var n,i,cs:byte; a:array[1..15] of integer; Max:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; Max := a[i]; cs:=i; for i:=2 to n do if a[i] > Max then begin Max:=a[i]; cs:=i; end; writeln(' phan tu lon nhat trong mang la: ',Max , ‘o vi tri ‘,i); readln end. Tìm phần tử có giá trị nhỏ nhất của mảng. Input A = 1 -4 5 6 -7 Output Min = -7, vt = 5 Xác định bài toán: Input: mảng a Output: Phần tử có giá trị nhỏ nhất trong mảng và vị trí của nó Thuật toán: B1Nhập n, a1,a2, , an B2: iß 2, Min ß a1 , csß 1 B3: nếu i > n thì đưa ra Max và kết thúc B4: nếu ai > Max, thì Max ß ai , csß i B5: i ß i + 1, quay lại bước 3. Chương trình: program timmax; uses crt; var n,i,cs:byte; a:array[1..15] of integer; Min:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; Min := a[i]; cs ß i; for i:=2 to n do if a[i] < Min then begin Min:=a[i]; cs:= i; end; writeln(' phan tu nho nhat trong mang la: ',Min,’ o vi tri ‘,i); readln end. Sắp xếp dãy a thành dãy không giảm. Input A = 1 -4 5 6 -7 Output A = -7 -4 1 5 6 Xác định bài toán: Input: mảng a Output: mảng a là dãy không tăng Thuật toán: B1Nhập n, a1,a2, , an B2: mß n B3: Nếu M < 2 thì đưa ra dãy a đã được sắp xếp rồi kết thúc B4: m ß m – 1, i ß 0 B5: iß i + 1 B6: Nếu i > M thì quay lại bước 3; B7: nếu ai > ai + 1 , thì tráo đổi ai và ai+1 cho nhau B8: quay lại bước 5. Chương trình: program sxkhonggiam; uses crt; var n,i,m,j:byte; a:array[1..15] of integer; t:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; for j:=n downto 2 do for i:= 1 to j-1 do if a[i] > a[i+1] then begin t:=a[i]; a[i]:=a[i+1]; a[i+1]:=t; end; writeln(' Day so sau khi sap xep: ’); for i:=1 to n do write(a[i]:4); readln end. Tính tổng các số nguyên dương chia hết cho 5 Input A = 1 5 8 4 10 Output S = 15 Xác định bài toán: Input: mảng a Output: tổng các phần tử trong mảng chia hết cho 5 Thuật toán: B1Nhập n, a1,a2, , an B2: iß 1, s ß 0, B3: nếu ai chia hết cho 5 thì s ß s + ai B4: i ßi + 1 B5: nếu i > n, đưa ra S và TB rồi kết thúc. B6: quay lại bước 3. Chương trình: program tongboi5; uses crt; var n,i:byte; a:array[1..15] of integer; s:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; s:=0; for i:=1 to n do if a[i] mod 5 = 0 then s:=s+a[i]; writeln('tong cac phan tu chia het cho 5 la: ',s); readln end. Kiểm tra tính nguyên tố của các phần tử trong mảng. Input A = 2 3 4 5 6 Output 2 là số nguyên tố 3 là số nguyên tố 4 không phải là số nguyên tố 5 là số nguyên tố 6 không phải là số nguyên tố Xác định bài toán: Input: mảng a Output: tổng các phần tử chẵn và TB cộng của các phần tử chẵn trong mảng. Thuật toán: B1Nhập n, a1,a2, , an B2: iß 1, B3: nếu ai là nguyên tố thì thông báo ai là số nguyên tố B4: ngược lại, thông báo ai không phải là số nguyên tố. B5: ißi+1; B6: nếu i > n, kết thúc. B7: quay lại bước 3. Chương trình: program ktnguyento; uses crt; var a:array[1..15] of integer; n,i,j,d:byte; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,']= '); readln(a[i]); end; writeln('------------'); for i:=1 to n do begin d:=0; for j:=2 to (a[i] div 2) do if a[i] mod j = 0 then d:=d+1; if d=0 then writeln(a[i],' la so nguyen to') else writeln(a[i],' khong phai so nguyen to'); end; readln end. Có bao nhiêu phần tử trong mảng a có giá trị bằng k Input A1 = 1 4 5 4 7 Output K = 4 à d = 2 K = 6 à d = 0 Xác định bài toán: Input: mảng a, giá trị k Output: số lượng phần tử trong mảng có giá trị bằng k Thuật toán: B1Nhập n, a1,a2, , an , k B2: iß 1, dß 0 B3: nếu ai = k thì tăng d lên 1 đơn vị dß d +1 B4: ißi+1; B5: nếu i > n, đưa ra d và kết thúc. B6: quay lại bước 3. Chương trình: program timkiem; uses crt; var a:array[1..15] of integer; n,i,d:byte; k:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,']= '); readln(a[i]); end; write(‘phan gia tri k = ’); readln(k); d:=0; for i:=1 to n do if a[i]=k then d:=d+1; writeln(‘so luong phan tu trong mang co gia tri bang ’,k,’ la: ‘,d); readln end. Tìm vị trí xuất hiện của giá trị X trong mảng a và thay thế X thành Y. Input A = 1 4 5 6 7, x = 5, y =10 Output A = 1 4 10 6 7 Xác định bài toán: Input: mảng a, giá trị k Output: giá trị X trong mảng được thay thế bằng giá trị Y Thuật toán: B1Nhập n, a1,a2, , an , x,y B2: iß 1 B3: nếu ai = x thì ai ß y B4: ißi+1; B5: nếu i > n, đưa ra mảng sau khi thay thế và kết thúc. B6: quay lại bước 3. Chương trình: program thaythe; uses crt; var a:array[1..15] of integer; n,i:byte; x,y:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] ='); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n do write(a[i]:4); writeln; write('nhap gia tri can tim: '); readln(x); write('nhap gia tri thay the: '); readln(y); for i:=1 to n do if a[i]=x then a[i]:=y; write('mang sau khi thay the: '); for i:=1 to n do write(a[i]:4); readln end. Tìm kiếm các cặp 2 phần tử gần nhau có tổng chia hết cho 10. Thay thế các phần tử đó bằng tổng của chúng. Input A = 2 4 6 14 16 24 Output A = 1 10 10 30 30 24 Xác định bài toán: Input: mảng a, giá trị k Output: mảng a sau khi thay thế Thuật toán: B1Nhập n, a1,a2, , an , x,y B2: iß 1 B3: nếu ai + ai+1 chia hết cho 10 thì ai và ai+1 nhận giá trị mới là tổng của chúng. B4: ißi+1; B5: nếu i > n, đưa ra mảng sau khi thay thế và kết thúc. B6: quay lại bước 3. Chương trình: program thaythe; uses crt; var a:array[1..15] of integer; n,i:byte; x,y:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] ='); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n do write(a[i]:4); writeln; for i:=1 to n do if (a[i] +a[i+1]) mod 10 = 0 then begin a[i]:=a[i]+a[i+1]; a[i+1]:=a[i]; end; write('mang sau khi thay the: '); for i:=1 to n do write(a[i]:4); readln end. Kiểm tra mảng có đối xứng hay không? Input A1 = 1 4 5 6 7 A2 = 1 2 3 2 1 A3 = 1 2 3 3 2 1 Output A1 không đối xứng A2 đối xứng A3 đối xứng Xác định bài toán: Input: mảng a, giá trị k Output: thông báo mảng a có đối xứng hay không. Thuật toán: B1Nhập n, a1,a2, , an B2: iß 1, dx ß true B3: nếu ai an-i+1 thì dx nhận giá trị mới là false. B4: ißi+1; B5: nếu i > n, B5.1: kiểm tra nếu dx = true thì tb mảng đối xứng và kết thúc B5.2: dx = false thì thông báo mảng không đối xứng và kết thúc B6: quay lại bước 3. Chương trình: program doixung; uses crt; var a:array[1..15] of integer; n,i:byte; dx:boolean; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] ='); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n do write(a[i]:4); writeln; dx:=true; for i:=1 to n do if a[i] a[n-i+1] then dx:=false; if dx= true then writeln('day la mang doi xung') else writeln('day khong phai mang doi xung'); readln end. Kiểm tra xem mảng a có phải là mảng tăng theo cấp số cộng d hay không? Input A1 = 1 4 5 6 7 A2 = 1 4 7 10 Output A1 không phải cấp số cộng A2 là cấp số cộng có công sai là 3 Xác định bài toán: Input: mảng a, giá trị k Output: thông báo mảng a có phải là cấp số cộng hay không? Thuật toán: B1Nhập n, a1,a2, , an B2: iß 2, d ß a2 – a1, csc ß true B3: nếu ai ai-1 + d, thì csc ß false. B4: ißi+1; B5: nếu i > n, B5.1: kiểm tra nếu csc = true thì tb mảng là cấp số cộng, kết thúc B5.2: csc = false thì tb mảng không là cấp số cộng và kết thúc B6: quay lại bước 3. Chương trình: program cscong; uses crt; var a:array[1..15] of integer; d:integer; n,i:byte; csc:boolean; begin clrscr; write('nhap so luong ptu cua mang '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n do write(a[i]:4); writeln; d:=a[2]-a[1]; csc:=true; for i:=2 to n do if (a[i]-a[i-1]d) then csc:= false; if csc=true then writeln('day la cap so cong co cong sai = ',d) else writeln('day khong la cap so cong'); readln end. Chèn phần tử X vào vị trí k trong mảng. Input A = 1 4 5 6 7, k = 3, x = 10 Output A = 1 4 10 5 6 7 Xác định bài toán: Input: mảng a, giá trị k Output: mảng a sau khi chèn Thuật toán: B1: Nhập n, a1,a2, , an , x, k B2: Chia mảng làm đôi, xuất mảng từ vị trí thứ nhất đến k -1 B3: dịch chuyển các phần từ ở nửa cuối mảng đến i + 1 B4: tại vị trí k của mảng nhận giá trị x B5: Đưa ra mảng sau khi thay thế và kết thúc. Chương trình: program chenso; uses crt; var a:array[1..15] of integer; n,i,k:byte; x:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n do begin write('nhap phan tu a[',i,'] ='); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n do write(a[i]:4); writeln; write('nhap vi tri can chen: '); readln(k); write('nhap gia tri can chen: '); readln(x); write('mang sau khi thay chen: '); for i:=1 to k-1 do write(a[i]:4); for i:=n+1 downto k+1 do a[i]:=a[i-1]; a[k]:=x; for i:=k to n+1 do write(a[i]:4); readln end. Bài 12: Kiểu xâu: Bài 1: nhập vào 2 xâu, đưa ra xâu có độ dài lớn hơn, và đưa ra xâu lớn hơn Input S1 = ‘tin hoc’ S2 = ‘hoc tin hoc’ Output Xâu dài hơn: S2 = ‘hoc tin hoc’ Xâu lớn hơn: S1 = ‘tin hoc’ Ý tưởng: So sánh hai xâu, xâu nào lớn hơn thì xuất ra màn hình So sánh hai xâu, xâu nào dài hơn thì xuất ra màn hình Chương trình: program sosanh; uses crt; var s1,s2:string; begin clrscr; write('Nhap xau thu nhat: '); readln(s1); write('Nhap xau thu hai: '); readln(s2); if s1> s2 then writeln(‘xau lon hon la:’,s1) else writeln(‘xau lon hon la:’,s2); if length(s1) > length(s2) then writeln(‘xau dai hon la:’,s1) else writeln(‘xau dai hon la:’,s2); readln end. Bài 2: nhập vào 1 xâu, đếm số kí tự chữ số có trong xâu Input Nam sinh ngay 21/10/1999 Output 8 Ý tưởng: Khởi tạo một biến đếm d = 0 Lần lượt đi từ đầu xâu đến cuối xâu kiểm tra xem kí tự nào là số từ 0 9 nếu là số thì tăng biến đếm lên 1 đơn vị Chương trình: program demso; uses crt; var s1:string; i:byte; begin clrscr; write('nhap xau: '); readln(s1); d:=0; for i:=1 to length(s1) do if ('0'<=s1[i]) and (s1[i]<='9') then d:=d+1; writeln('ket qua: ',d); readln end. Bài 3: nhập vào 1 xâu, kiểm tra xâu đó có phải là xâu đối xứng hay không? Input S1= ‘tin hoc’ S2= ‘tot’ Output S1 không đối xứng S2 là xâu đối xứng Ý tưởng: Khởi tạo 1 xâu rỗng Xâu rỗng vừa tạo lưu trữ xâu nhập vào theo thứ tự từ sau ra trước. Nếu 2 xâu bằng nhau thì xâu nhập vào là xâu đối xứng và ngược lại Chương trình: program doixung; uses crt; var s1,s2:string; i:byte; begin clrscr; write('nhap xau: '); readln(s1); s2:=''; for i:=length(s1) downto 1 do s2:=s2+s1[i]; if s1 = s2 then writeln('day la xau doi xung') else writeln('day khong phai xau doi xung'); readln end. Bài 4: nhập vào 1 xâu, đưa ra màn hình các chữ số có trong xâu Input Nam sinh nam 1999 – ki mao Output 1999 Ý tưởng: Khởi tạo 1 xâu rỗng Lần lượt đi từ đầu xâu đến cuối xâu kiểm tra xem kí tự nào là số từ 0 9 nếu là số thì đưa vào xâu rỗng trên. Chương trình: program inso; uses crt; var s1,s2:string; i:byte; begin clrscr; write('nhap xau: '); readln(s1); s2:=''; for i:=1 to length(s1) do if ('0'<=s1[i]) and (s1[i]<='9') then s2:=s2+s1[i]; writeln('ket qua: ',s2); readln end. Bài 5: nhập vào 1 xâu, chuyển xâu vừa nhập thành xâu in hoa Input tin hoc Output TIN HOC Ý tưởng: Sử dụng câu lệnh chuyển chữ thường thành chữ hoa Lần lượt đi từ đầu xâu đến cuối xâu và thực hiện chuyển chữ Chương trình: program chuyenchu; uses crt; var s:string; i:byte; begin clrscr; write('nhap xau: '); readln(s); for i:=1 to length(s) do s[i]:= upcase(s[i]); writeln('xau sau khi chuyen: ',s); readln end. Bài 6: nhập vào 1 xâu, thay thế tất cả các cụm kí tự “anh” bằng cụm kí tự “em”. Ý tưởng: Xác định vị trí của cụm kí tự anh Xóa cụm kí tự anh Chèn cụm kí tự em vào vị trí vừa xóa Chương trình: program thaychu; uses crt; var s:string; i,vt:byte; begin clrscr; write('nhap xau: '); readln(s); while pos('anh',s)0 do begin vt:=pos('anh',s); delete(s,vt,3); insert('em',s,vt); end; writeln('xau sau khi chuyen: ',s); readln end. Bài 7: nhập vào 1 xâu, xóa các kí tự trắng thừa trong xâu (kí tự trắng thừa là kí tự ở đầu và cuối xâu, giữa hai từ có 2 kí tự trắng). Input ‘ hoc tin hoc ’ Output ‘hoc tin hoc’ Ý tưởng: Xóa kí tự trắng ở đầu và cuối dãy trước. Lần lượt đi từ đầu xâu đến cuối xâu nếu 2 kí tự liền nhau là 2 kí tự trắng thì xóa bớt đi 1 kí tự trắng Chương trình: program xoatrang; uses crt; var st:string; i,n: byte; begin clrscr; write('Nhap xau: '); readln(st); n:=length(st); if st[1]=' ' then delete(st,1,1); if st[n]=' ' then delete(st,n,1); for i:=1 to n do if (st[i]=' ') and (st[i+1]=' ') then delete(st,i,1); writeln('Ket qua la: ',st); readln end. Bài 8: nhập vào họ tên của 1 người, điều chỉnh các kí tự đầu của các từ thành chữ in hoa Input kieu le quyen Output Kieu Le Quyen Ý tưởng: Tìm vị trí của các dấu cách Chuyển kí tự tiếp theo sau dấu cách thành kí tự in hoa Chuyển kí tự đầu tiên trong xâu thành kí tự in hoa Chương trình: program doichu; uses crt; var st,ten:string; i: byte; begin clrscr; write('Nhap xau: '); readln(st); for i:=1 to length(st) do if st[i]=' ' then st[i+1]:=upcase(st[i+1]); st[1]:=upcase(st[1]); writeln('ket qua la: ',st); readln end. Bài 9: nhập vào họ tên của 1 người, đưa ra phần tên. Input Kieu Le Quyen Output Quyen Ý tưởng: Tìm vị trí của dấu cách cuối cùng (vt) Đếm số kí tự của phần tên (độ dài của tên: dai) Copy từ xâu vừa nhập ra dai kí tự từ vị trí vt à được tên. Chương trình: program tach_ten; uses crt; var st,ten:string; vt,dai,i: byte; begin clrscr; write('Nhap xau: '); readln(st); for i:=1 to length(st) do if st[i]=' ' then vt:=i+1; dai:=length(st) - vt + 1; ten:=copy(st,vt,dai); writeln('Phan ten la: ',ten); readln end. Bài 10: Nhập vào một xâu, mã hóa xâu vừa nhập theo vòng tròn k =1. Input abc Output bcd Ý tưởng: Tìm vị trí của dấu cách cuối cùng (vt) Đếm số kí tự của phần tên (độ dài của tên: dai) Copy từ xâu vừa nhập ra dai kí tự từ vị trí vt à được tên. Chương trình: program mahoa; uses crt; var st:string; i: byte; begin clrscr; write('Nhap xau: '); readln(st); for i:=1 to length(st) do st[i]:= succ(st[i]); {giới thiệu thêm cho HS} writeln('ket qua sau ma hoa: ',st); readln end. Bài 11: nhập vào 1 xâu, thông báo ra màn hình chữ cái có trong xâu và số lượng của chúng.(không phân biệt chữ hoa, chữ thường); Input ‘hoc tin hoc’ Output H : 2 O : 2 C : 2 T : 1 I : 1 N : 1 Ý tưởng: Khởi tạo một mảng dem để đếm các kí tự Chuyển kí tự trong dãy thành kí tự in hoa Đi từ đầu xâu đến cuối xâu so xâu vừa nhập với bảng chữ cái in hoa, nếu xuất hiện kí tự nào thì thực hiện đếm kí tự đó. Kí tự có trong xâu thì biến đếm kí tự đó > 0. Từ điều kiện này ta xuất ra màn hình kí tự và số lượng kí tự có trong xâu. Chương trình: program demkitu; Uses Crt; Var St:String; dem: Array['A'..'Z'] Of Byte; i:Byte; ch:Char; Begin clrscr; Write('Nhap xau St: '); Readln(St); For ch:='A' To 'Z' Do dem[ch]:=0; For i:=1 To Length(St) Do If (Upcase(St[i]) >='A') and (Upcase(St[i]) <='Z') Then dem[Upcase(St[i])]:=dem[Upcase(St[i])] +1; For ch:='A' To 'Z' Do If dem[ch]>0 Then Writeln(ch,' : ',dem[ch]); Readln; End.
Tài liệu đính kèm: