1. Bài toán chuẩn hóa tên 1
Bài toán này sẽ yêu cầu bạn chuẩn hóa tên bằng cách loại bỏ dấu cách thừa giữa các từ và viết hoa chữ cái đầu của từng từ.
Ví dụ " nguYEN Thuy linH" => "Nguyen Thuy Linh"
Phương pháp làm những bài toán chuẩn hóa tên đó là bạn nên tách từng từ ra sau đó xử lý từng từ và gộp lại
Nếu bạn chưa học phương pháp tách từ trong xâu thì bạn có thể tham khảo tại đây
Mã nguồn :
#include "iostream" #include "string" #include "ctype.h" #include "sstream" using namespace std; int main(){ string name = "tran VAn TeCH28"; stringstream ss(name); string res = "", word; while(ss >> word){ res += toupper(word[0]); for(int j = 1; j < word.size(); j++){ res += tolower(word[j]); } res += " "; } res.pop_back(); cout << "Ten chuan hoa : " << res << endl; }
Output :
Ten chuan hoa : Tran Van Tech282. Bài toán chuẩn hóa tên 2
Bài toán này yêu cần bạn in ra tên trước rồi mới tới họ và đệm
Ví dụ "tran VaN TeCH28" => "Tech28 Tran Van"
Để dễ dàng đưa ra các từ theo thứ tự mong muốn thì bạn nên lưu lại các từ vào trong 1 vector hoặc mảng, nếu bạn chưa biết vector có thể tham khảo tại đây
Mã nguồn :
#include "iostream" #include "string" #include "ctype.h" #include "sstream" #include "vector" using namespace std; //Ham nay chuan hoa 1 tu string convert(string s){ s[0] = toupper(s[0]); for(int i = 1; i < s.size(); i++){ s[i] = tolower(s[i]); } return s; } int main(){ string name = "tran VAn TeCH28"; stringstream ss(name); vector<string> v; string word; while(ss >> word){ v.push_back(convert(word)); } cout << "Ten sau khi chuan hoa : "; cout << v[v.size() - 1] << " "; for(int i = 0; i < v.size() - 1; i++){ cout << v[i]; if(i != v.size() - 2){ cout << " "; } } }
Output :
Ten sau khi chuan hoa : Tech28 Tran VanBằng cách lưu từng từ trong tên vào vector hoặc mảng thì bạn có thể chủ động trong việc in ra theo thứ tự mà đề bài yêu cầu.
3. Bài toán cấp email theo tên
Bài toán cấp email thường gặp khi bạn cần cung cấp email cho các nhân viên trong 1 công ty hay các sinh viên trong trường đại học dựa trên tên của họ.
Ví dụ tên "Nguyen Van Nam" sẽ được cấp email là "namnv@28tech.com.vn" chẳng hạn
Tên email được cấp bằng cách lấy tên và ghép với các chữ cái đầu tiên của họ và đệm.
Có nhiều kiểu cấp email khác nhau nhưng bạn có thể làm tương tự kiểu chuẩn email này.
Mã nguồn :
#include "iostream" #include "string" #include "ctype.h" #include "sstream" #include "vector" using namespace std; int main(){ string name = "tran VAn loNG"; for(int i = 0; i < name.size(); i++){ name[i] = tolower(name[i]); } stringstream ss(name); vector<string> v; string word; while(ss >> word){ v.push_back(word); } string email = v[v.size() - 1]; // ten for(int i = 0; i < v.size() - 1; i++){ email += v[i][0]; // ki tu dau tien cua ho va dem } email += "@28tech.com.vn"; cout << "Email duoc cap : " << email << endl; }
Output :
Email duoc cap : longtv@28tech.com.vn
Video giải bài tập string :