Bài 6: Viết CT thực hiện các yêu cầu sau:
- Đọc vào một xâu kí tự.
- Sắp xếp lại xâu này sao cho kí tự thứ 1 đổi chỗ cho kí tự thứ
n, kí tự thứ 3 đổi chỗ cho kí tự thứ n-2,… kí tự ở vị trí chẵn
không đổi.
- Đưa xâu đã sắp xếp ra màn hình.
Xâu kí tự được gọi là đối xứng nêu thay đổi thứ tự ngược lại các kí tự của xâu thì vẫn nhận được dãy ban đầu. Ví dụ xâu “abcdcba" là đối xứng, còn xâu “1011” không là đối xứng. Thiết kế và viết chương trình kiểm tra một xâu kí tự cho trước có là đối xứng hay không. Yêu cầu đưa ra quy trình thiết kế theo phương pháp làm mịn dần.
Tham khảo:
Quy trình thiết kế theo phương pháp làm mịn dần để kiểm tra xâu kí tự có là đối xứng hay không gồm các bước sau:
Bước 1: Nhận đầu vào là xâu kí tự cần kiểm tra.
Bước 2: Loại bỏ các kí tự không cần thiết, chẳng hạn khoảng trắng và dấu cách, để chuẩn bị cho quá trình kiểm tra.
Bước 3: Chuyển đổi xâu kí tự về dạng chữ thường hoặc dạng chữ hoa (tuỳ thuộc vào yêu cầu của đề bài) để đảm bảo tính nhất quán trong quá trình kiểm tra.
Bước 4: Sử dụng một vòng lặp để so sánh các kí tự ở đầu và cuối xâu kí tự, sau đó di chuyển lần lượt về phía nhau.
Bước 5: Trong quá trình lặp lại, so sánh các kí tự ở hai vị trí tương ứng với nhau. Nếu chúng khác nhau, xâu kí tự không là đối xứng và chương trình dừng lại, trả về kết quả là "Không đối xứng".
Bước 6: Nếu các kí tự ở hai vị trí tương ứng với nhau đều giống nhau, tiếp tục di chuyển các con trỏ về phía nhau và so sánh các kí tự tiếp theo cho đến khi hoàn thành kiểm tra toàn bộ xâu kí tự.
Bước 7: Nếu tất cả các cặp kí tự ở vị trí tương ứng với nhau đều giống nhau, tức là xâu kí tự là đối xứng, chương trình dừng lại và trả về kết quả là "Đối xứng".
Bước 8: Kết thúc chương trình và đưa ra kết quả cuối cùng.
Chương trình:
def kiem_tra_doi_xung(xau):
# Loại bỏ các kí tự không cần thiết và chuyển đổi xâu về dạng chữ thường
xau = xau.replace(" ", "").lower()
n = len(xau)
# Sử dụng vòng lặp để kiểm tra từ đầu và cuối xâu kí tự
for i in range(n // 2):
if xau[i] != xau[n - i - 1]:
return "Không đối xứng"
return "Đối xứng"
Lập trình nhập từ bàn phím xâu kí tự chữ cái s (|s| ≤ 100000). In ra màn hình xâu đó sau khi sắp xếp vị trí các kí tự theo thứ tự: chữ cái in hoa giảm dần rồi đến chữ cái in thường giảm dần.
Dữ liệu nhập:
- Một xâu kí tự S duy nhất
Kết quả:
- in ra màn hình xâu sau khi sắp xếp
Cho một xâu S có N kí tự. Người ta viết các kí tự của xâu S lên vòng tròn theo chiều kim đồng hồ. Như vậy, nếu đi trên vòng tròn theo chiều kim đồng hồ thì kí tự thứ N+1 chính là kí tự thứ nhất của xâu S. Xuất phát từ ký tự thứ nhất của xâu S trên vòng tròn, ta đếm từng ký tự theo chiều kim đồng hồ đến kí tự thứ K rồi cắt vòng tròn tại vị trí sau kí tự thứ K này, ta được một xâu mới R mà ký tự đầu tiên của xâu mới là kí tự thứ K+1. Dữ liệu vào: Cho từ tệp văn bản DOIXAU.INP dòng đầu tiên là xâu S, dòng thứ 2 là số nguyên K(1 ≤ K ≤ 104). Kết quả: Ghi vào file DOIXAU.OUT xâu R.
viết chương trình nhập vào một xâu S rồi thực hiện các yêu cầu sau: a) in ra màn hình xâu S sau khi đã thay thế tất cả các kí tự 'C' thành 'LOP11A' b) hãy cho biết trong xâu S có bao nhiu kí tự c) nhập thêm xâu s1 rồi kiểm tra xem kí tự đầu của hai xâu S và S1 có trùng nhau không, xuất kết quả ra màn hình
program bai1;
uses crt;
var i:integer;
s,s1:string;
begin
clrscr;
write('nhap S:');readln(s);
while pos('C',s)<>0 do
begin
insert('LOP11A',s,pos('C',s));
delete(s,pos('C',s),1);
end;
writeln('xau sau khi bien doi la: ',s);
writeln('do dai cua xau tren la: ',length(s));
write('nhap s1:');readln(s1);
if s1[1]=s[1] then writeln('ki tu dau cua hai xau trung nhau')
else writeln('ki tu dau cua hai xau khong trung nhau');
readln;
end.
Cho một xâu kí tự S chỉ toàn kí tự số 0 và 1. Biết rằng các kí tự số 0 đứng trước các ký tự số : 00....0011.....11.
Yêu cầu: Hãy cho biết vị trí của ký tự số 0 cuối cùng trong dãy.
Dữ liệu vào:
Chứa xâu kí tự S (Độ dài của xâu S≤107 và luôn có ký tự số 0 và ký tự số 1)
Kết quả:
Một số nguyên dương là vị trí của ký tự số 0 cuối cùng trong dãy.
Ví dụ
Input
Copy
0000011111
Output
Copy
Lưu ý:Dùng C++
var s:string;
i:integer;
begin
write('Nhap xau ki tu S = ');readln(s);
for i:=1 to length(s) do
begin
if s[i] <> '0' then write('Vi tri cua so 0 cuoi cung la ',i-1);
i:=length(s);
end;
readln;
end.
Nhậo vào bàn phím xâu C
a, tính độ dài xâu
b, thực hiện tạo xâu mới gồm 4 kí tự bắt đầu từ vị trí thứ 5 trong xâu
c, đếm xem xâu có bao nhiêu kí tự b
d, in các kết quả ra màn hình
uses crt;
var st:string;
i,dem:integer;
begin
clrscr;
readln(st);
writeln(length(st));
for i:=5 to 8 do write(st[i]);
writeln;
dem:=0;
for i:=1 to length(st) do
if st[i]='b' then dem:=dem+1;
writeln(dem);
readln;
end.
Đề bài: Nhập vào xâu s, có đội dài không quá 100 kí tự
1. Hãy chuẩn hoá xâu S (xoá các kí tự trắng thừa giữa các từ trong xâu, chỉ giữ lại 1)
2. Đếm xem xâu S có bao nhiu từ
3. Đổi tất cả kí tự "a" trong xâu S thành "A"
viết phương trình nhập vào xâu s1 có m kí tự, sâu s2 có n kí tự. chèn xâu s1 vào xâu s2 ở vị trí n – 5
uses crt;
var s1,s2:string;
begin
clrscr;
readln(s1,s2);
insert(s1,s2,5);
writeln(s2);
readln;
end.
Một xâu được gọi là chuẩn nếu đầu và cuối xâu không có ký tự trống, đồng thời
trong xâu không có 2 ký tự trống kề liền. Cho xâu S không quá 500 kí tự.
Yêu cầu: - Chuẩn hóa xâu đã nhập.
- Tìm số lượng kí tự chữ số trong xâu.
Dữ liệu vào: Xâu kí tự S.
Dữ liệu ra: Dòng 1: In ra xâu đã chuẩn hóa.
Dòng 2: In ra số lượng kí tự chữ số.