Hướng dẫn giải của In hoa
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Tác giả:
1. Sử dụng hàm toupper
Hàm toupper từ thư viện <cctype> chuyển một ký tự chữ thường thành chữ hoa.
Mã ví dụ:
cpp
#include <iostream>
#include <cctype>
using namespace std;
int main() {
string s;
cin >> s; // Nhập chuỗi từ người dùng
for (char &c : s) {
c = toupper(c); // Chuyển từng ký tự sang chữ hoa
}
cout << s; // In chuỗi đã chuyển
return 0;
}
2. Sử dụng hàm transform
Hàm std::transform từ thư viện <algorithm> áp dụng một hàm cho tất cả các phần tử trong chuỗi.
Mã ví dụ:
cpp
#include <iostream>
#include <algorithm>
#include <cctype>
using namespace std;
int main() {
string s;
cin >> s; // Nhập chuỗi từ người dùng
transform(s.begin(), s.end(), s.begin(), ::toupper); // Chuyển chữ thường sang hoa
cout << s; // In chuỗi đã chuyển
return 0;
}
3. Thủ công bằng vòng lặp
Duyệt từng ký tự trong chuỗi và kiểm tra nếu ký tự là chữ thường, thì chuyển nó sang chữ hoa bằng cách trừ đi 'a' và cộng 'A'.
Mã ví dụ:
cpp
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s; // Nhập chuỗi từ người dùng
for (char &c : s) {
if (c >= 'a' && c <= 'z') { // Kiểm tra nếu là chữ thường
c = c - 'a' + 'A'; // Chuyển thành chữ hoa
}
}
cout << s; // In chuỗi đã chuyển
return 0;
}
So sánh các cách
Dùng toupper: Thích hợp khi bạn chỉ cần xử lý ký tự riêng lẻ, dễ hiểu.
Dùng transform: Hiệu quả cho xử lý chuỗi lớn, đơn giản và ngắn gọn.
Thủ công: Thích hợp cho người mới học để hiểu rõ cơ chế chuyển đổi.
Ví dụ minh họa
Đầu vào:
helloWorld123
Kết quả:
HELLOWORLD123
Bình luận