24/04/2023
24/04/2023
24/04/2023
Đây là code C++ để giải bài toán trên:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void chuanHoaXau(string &s) {
// Xóa các ký tự trắng thừa ở đầu và cuối chuỗi
while (s.front() == ' ') s.erase(0, 1);
while (s.back() == ' ') s.pop_back();
// Chuẩn hoá từng từ trong chuỗi
for (int i = 0; i < s.length(); i++) {
// Bỏ qua các ký tự trắng thừa
while (s[i] == ' ' && s[i + 1] == ' ') s.erase(i + 1, 1);
// Viết hoa chữ cái đầu của từ
if (i == 0 || s[i - 1] == ' ') s[i] = toupper(s[i]);
// Viết thường các chữ cái còn lại
else s[i] = tolower(s[i]);
}
}
int demSoTu(string s) {
int count = 0;
bool isWord = false;
for (char c : s) {
if (c != ' ' && !isWord) {
isWord = true;
count++;
}
else if (c == ' ') {
isWord = false;
}
}
return count;
}
void daoNguocXau(string &s) {
reverse(s.begin(), s.end());
}
void xoaKyTuSo(string &s) {
s.erase(remove_if(s.begin(), s.end(), ::isdigit), s.end());
}
int main() {
string s;
cout << "Nhap vao mot xau ky tu: ";
getline(cin, s);
chuanHoaXau(s);
cout << "Xau sau khi chuan hoa: " << s << endl;
int soTu = demSoTu(s);
cout << "So tu trong xau: " << soTu << endl;
daoNguocXau(s);
cout << "Xau sau khi dao nguoc: " << s << endl;
xoaKyTuSo(s);
cout << "Xau sau khi xoa ky tu so: " << s << endl;
return 0;
}
```
Giải thích:
- Hàm `chuanHoaXau` dùng để chuẩn hoá xâu ký tự đầu vào. Đầu tiên, ta xóa các ký tự trắng thừa ở đầu và cuối chuỗi bằng cách sử dụng hàm `erase` và `pop_back`. Sau đó, ta duyệt qua từng ký tự trong chuỗi và chuẩn hoá từng từ bằng cách viết hoa chữ cái đầu tiên của từ và viết thường các chữ cái còn lại. Ta sử dụng hàm `toupper` và `tolower` để thực hiện việc này.
- Hàm `demSoTu` dùng để đếm số từ trong xâu ký tự. Ta duyệt qua từng ký tự trong chuỗi và đếm số từ bằng cách kiểm tra xem ký tự hiện tại có phải là ký tự khoảng trắng hay không. Nếu không phải và trước đó là một từ khác thì ta tăng biến đếm lên 1.
- Hàm `daoNguocXau` dùng để đảo ngược xâu ký tự đầu vào. Ta sử dụng hàm `reverse` để thực hiện việc này.
- Hàm `xoaKyTuSo` dùng để xoá đi các ký tự số trong xâu ký tự đầu vào. Ta sử dụng hàm `remove_if` để loại bỏ các ký tự số và sau đó sử dụng hàm `erase` để xoá các ký tự này khỏi chuỗi.
Sau khi nhập vào một xâu ký tự, chương trình sẽ thực hiện các bước sau:
1. Chuẩn
Nếu bạn muốn hỏi bài tập
Các câu hỏi của bạn luôn được giải đáp dưới 10 phút
CÂU HỎI LIÊN QUAN
Top thành viên trả lời