Quan sát các ví dụ sau để biết cách sử dụng một số lệnh thường dùng với xâu kí tự như: split(), join().
1.Khái niệm về xâu và kiểu string.
-Xâu kí tự là một dãy gồm nhiều kí tự đặt cạnh nhau và được đánh các số phần tử theo chỉ số;ví dụ”Toan Tin”,phần tử thứ I là s[i].
-Như vậy xét về bản chất xâu kí tự giống như một mảng kí tự.
-Ta đặt xâu kí tự trong dấu nháy kép,còn mỗi kí tự ta đặt trong dấu nháy đơn.
Xâu đối xứng
Cho một xâu ký tự SS chỉ gồm các chữ cái thường a..z. Xâu đối xứng là xâu kí tự mà khi viết từ phải qua trái hay từ trái qua phải thì xâu đó không thay đổi. Ví dụ: madammadam, ioiioi là các xâu đối xứng.
Yêu cầu: Với xâu ký tự SS cho trước, hãy tính số ký tự bỏ đi ít nhất để các ký tự còn lại có thể sắp xếp được thành một xâu đối xứng.
Ví dụ:
Cho xâu aammmda thì cần bỏ 2 ký tự a và m thì xâu còn lại là ammda và xếp lại thành madam là xâu đối xứng.
Cho xâu aaabbcc thì không cần bỏ ký tự thì xâu đó xếp lại thành bcaaacb là xâu đối xứng.
Dữ liệu vào
Đọc từ file văn bản XAUDX.INP chứa một xâu ký tự SS có nn ký tự (n≤105n≤105) chỉ gồm các ký tự chữ cái thường a..z.
Kết quả
Ghi ra file văn bản XAUDX.OUT một số nguyên là số lượng ký ít nhất cần bỏ để các ký tự còn lại có thể sắp xếp được thành một xâu đối xứng.
Sample Input 1
aammmda
Sample Output 1
2
Sample Input 2
aaabbcc
Sample Output 2
0
Lưu ý :Dùng C++
#include<bits/stdc++.h>
using namespace std;
int main(){
long long i,dem[1000],d;
string s;
cin >>s;
for(i=0;i<s.size();i++)
dem[s[i]]++;
d=0;
for(i=97;i<=122;i++)
if(dem[i]%2==1)
d++;
if(d>0)
cout<<d-1;
else
cout<<0;
return 0;
}
Xâu đối xứng
Cho một xâu ký tự SS chỉ gồm các chữ cái thường a..z. Xâu đối xứng là xâu kí tự mà khi viết từ phải qua trái hay từ trái qua phải thì xâu đó không thay đổi. Ví dụ: madammadam, ioiioi là các xâu đối xứng.
Yêu cầu: Với xâu ký tự SS cho trước, hãy tính số ký tự bỏ đi ít nhất để các ký tự còn lại có thể sắp xếp được thành một xâu đối xứng.
Ví dụ:
Cho xâu aammmda thì cần bỏ 2 ký tự a và m thì xâu còn lại là ammda và xếp lại thành madam là xâu đối xứng.
Cho xâu aaabbcc thì không cần bỏ ký tự thì xâu đó xếp lại thành bcaaacb là xâu đối xứng.
Dữ liệu vào
Đọc từ file văn bản XAUDX.INP chứa một xâu ký tự SS có nn ký tự (n≤105n≤105) chỉ gồm các ký tự chữ cái thường a..z.
Kết quả
Ghi ra file văn bản XAUDX.OUT một số nguyên là số lượng ký ít nhất cần bỏ để các ký tự còn lại có thể sắp xếp được thành một xâu đối xứng.
Sample Input 1
aammmda
Sample Output 1
2
Sample Input 2
aaabbcc
Sample Output 2
0
Lưu ý :Dùng C++
Đếm số lần xuất hiện của các kí tự 'a'..'z' trong xâu S. Dễ thấy với các kí tự có số lần xuất hiện là chẵn, ta có thể xếp một nửa kí tự đó sang 2 bên thỏa mãn tính chất đối xứng. Đối với kí tự có số lần xuất hiện là lẻ, ta làm tương tự và đưa kí tự còn lại vào trung tâm. Như vậy, để xâu sau khi xóa đối xứng thì chỉ có duy nhất một kí tự có số lần xuất hiện lẻ nên ta sẽ xóa các kí tự lẻ đó, chỉ để lại 1 hoặc 0 cái cuối cùng.
code tham khảo:
int main()
{
string s;
cin >> s;
vector<int> fre(256, 0);
for (char c : s) fre[c]++;
int res = 0;
for (int x : fre) res += (x % 2 == 1);
cout << res - (res > 0);
return 0;
}
Ngôn ngữ c++
Đầu vào #include<bits/stdc++.h>
Cho 3 dòng, mỗi dòng ghi một xâu kí tự chỉ gồm các kí tự latin viết thường có thể chứa dấu cách lần lượt thể hiện Họ, Đệm, Tên của một người. Hãy in ra một dòng gồm họ tên đầy đủ của người đó (xem thêm ví dụ minh hoạ).
- Input : Gồm ba dòng, mỗi dòng ghi xâu kí tự; dòng 1 là Họ; dòng 2 là Đệm; dòng 3 là Tên.
- Output : Gồm 1 dòng ghi tên theo cấu trúc Họ Đệm Tên
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
for (int i = 1; i <= 3; i++)
{
cin >> s;
cout << s << " ";
}
}
Sử dụng ngôn ngữ lập trình Pascal để viết chương trình sau :
Hãy nhập vào bàn phím một xâu S rồi đưa ra màn hình tất cả các từ của xâu đó.
Định nghĩ về từ : Từ là một dãy các kí tự liên tiếp cách nhau bởi dấu cách
uses crt;
var st:string;
i,d:integer;
begin
clrscr;
readln(st);
d:=length(st);
for i:=1 to d do
begin
if st[i]=' ' then writeln
else write(st[i]);
end;
readln;
end.
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"
Tìm hiểu các ví dụ sau và thực hiện yêu cầu nêu ở dưới:
a) Cùng trình bày một nội dung cơ bản giống nhau nhưng cách dùng từ ngữ trong hai ví dụ trên khác nhau như thế nào? Hãy chỉ rõ ưu điểm hoặc nhược điểm trong cách dùng từ ngữ của mỗi ví dụ?
b) Chỉ rõ những từ ngữ dùng không phù hợp với đối tượng nghị luận trong các ví dụ trên. Theo anh/chị, có thể sửa lại những từ ngữ này như thế nào để việc diễn đạt đảm bảo yêu cầu của văn nghị luận mà vẫn giữ nguyên ý chính của câu văn, đoạn văn?
c) Hãy viết một đoạn văn có nội dung cơ bản tương tự như các ví dụ trên nhưng dùng một số từ ngữ khác để thay đổi cách diễn đạt?
Hai đoạn văn giống nhau nhưng có cách dùng từ khác nhau:
Chúng ta hẳn ai cũng nghe nói về | Chúng ta không thể nhắc tới |
… trong lúc nhàn rỗi rãi… | Trong những thời khắc hiếm hoi được thanh nhàn bất đắc dĩ |
Bác vốn chẳng thích làm thơ… | Thơ không phải mục đích cao nhất |
-… vẻ đẹp lung linh | Nhưng vần thơ vang lên ... nhà tù |
Vẻ đẹp ấy thể hiện rõ trong từng bài thơ | … là những thi phẩm tiêu biểu cho tinh thần đó |
- Đoạn 1 có nhiều lỗi như cách dùng từ chưa hợp lí, sử dụng lối văn phong ngôn ngữ sinh hoạt: hẳn ai cũng nghe nói, trong lúc nhàn rỗi
- Đoạn 2: nhiều ưu điểm, từ ngữ phù hợp với văn nghị luận hơn
- Sửa lỗi dùng từ:
+ Nhàn rỗi → thư thái
+ Chẳng thích làm thơ → bác chưa bao giờ cho mình là một nhà thơ
+ Vẻ đẹp lung linh → vẻ đẹp cao quý
+ Vượt thoát qua chấn song, qua xiềng xích, qua dây trói của nhà tù → ở ngoài lao
điền các từ sau vào chỗ trống (phím Enter, Dòng, Trang văn bản, dấu xuống dòng, một đường ngang, đoạn và trang, Kí tự, các kí tự gõ liền nhau, Đoạn văn bản, Trang)
Các thành phần của văn bản:
-Văn bản có các thành phần cơ bản: Kí tự, từ, câu, dòng, ……… (1) ………….
-Kí tự: là con chữ, số, kí hiệu, ..... (2).......... là thành phần cơ bản nhất của văn bản. Kí tự trống là dấu cách.
Ví dụ: a, b, c, #, &, 4, 6 ...
-Từ soạn thảo: Một từ soạn thảo là ………(3)………….. Các từ soạn thảo thường được cách nhau bởi dấu cách, …………(4)…………… hoặc một dấu tách câu (dấu phẩy (,), dấu chấm (.), dấu hai chấm (:), dấu chấm than (!),…).
Ví dụ: Từ “học” có 3 kí tự.
-………(5)……….: là tập hợp các kí tự nằm trên cùng ……………(6) …………… từ lề trái sang lề phải của một trang.
-…………(7)……………….: Bao gồm một số câu và được kết thúc bằng dấu xuống dòng. Khi gõ văn bản, …………(8)………….. dùng để kết thúc một đoạn văn bản và xuống dòng.
-…………(9)…..: Phần văn bản trên một trang in gọi là ………(10)…………..
Mình cần gấp
CÁC VÍ DỤ:
AI. TRẮC NGHIỆM:
Câu 1: Khai báo bản tin độ dài tối đa 255?
Câu 2: S1:=11; và S2:=’11’; giống nhau đúng hay sai?
Trả lời:
Câu 3:
Lệnh
S[5];
để tham chiếu đến kí tự thứ 5 trong xâu S đúng không?
Trả lời:
Câu 4: Khai báo 1 xâu S có độ dài tối đa 100?
Trả lời:
Câu 5: Var stl:char; st2:string[1];
Lệnh gán stl:=st2; đúng không? Giải thích?
Trả lời:
Câu 6: Trong ngôn ngữ lập trình Pascal, xâu có độ dài bằng 0 gọi là......
A. Xâu rỗng
B. Xâu không
C. Không phải là xấu
D. Xâu trắng
Câu 7: Phát biểu nào sau đây sai:
A. Xâu có độ dài bằng 0 là xâu rỗng. C. Số lượng kí tự trong 1 xâu gọi là độ dài của xâu.
B. Xâu là 1 kí tự trong bảng mã ASCII
D. Mỗi kí tự được gọi là 1 phần tử của
Var
xâu.
b
Câu 8: Phép gán giá trị biến xâu(S) nào sau đây đúng?
A. S:='tin hoc'
B. S:="tin hoc";
C. S:=tin hoc;
D. S:= 'tin hoc'
6 Câu 9: Write (ha Noi > ‘ ha nam’) cho kết quả ?
A. True
B. False
Câu 10: ‘học + Tin
thực hiện phép ghép xâu trên cho kết quả gì?
A. 'Tinhoc'
D. 'hocTin'
B. 'Tin hoc'
C. 'hoc Tin'
*
Câu 11: Write (‘May tinh’>= ‘May tinh’) cho kết quả ?
A. True
B. False
I/.
II
Câu 12: Cho xâu st= 'chuc mung nam moi !', hãy chọn giá trị tham chiếu đúng:
A. st[6]=''
D. st[6]='c'
B. st[6]='m'
C. st[6]='u'
II