Loading Now

Bài tập về xử lý xâu trong C++: chuyển các ký tự in thường sang in hoa

Bài tập về xử lý xâu trong C++: chuyển các ký tự in thường sang in hoa

Bài tập

Cho xâu s được nhập từ bàn phím. Bạn hãy viết chương trình chuyển các ký tự in thường trong xâu s thành in hoa và hiển thị xâu s ra màn hình:

Ví dụ nếu bạn nhập s = "Dumv" như bên dưới:

Dumv

Thì màn hình sẽ hiển thị ra:

DUMV

Lý thuyết

Về bản chất ký tự cũng chỉ là một số nguyên, việc bạn chuyển 1 ký tự từ in thường sang in hoa thực chất là chuyển đổi từ 1 số nguyên sang 1 số nguyên khác. Như đã được học, để hiển thị giá trị nguyên (mã ASCII) của một ký tự bạn có thể làm như sau:

#include<iostream>

using namespace std;

int main() {
    cout << 'a' << " = " << (int)'a' << endl;
    cout << 'b' << " = " << (int)'b' << endl;
    cout << 'c' << " = " << (int)'c' << endl;
    cout << 'd' << " = " << (int)'d' << endl;
    cout << endl;
    cout << 'A' << " = " << (int)'A' << endl;
    cout << 'B' << " = " << (int)'B' << endl;
    cout << 'C' << " = " << (int)'C' << endl;
    cout << 'D' << " = " << (int)'D' << endl;
    return 0;
}

Chương trình này sẽ hiển thị lên màn hình:

a = 97
b = 98
c = 99
d = 100

A = 65
B = 66
C = 67
D = 68

Có thể quan sát thấy giá trị của các ký tự in thường luôn bằng giá trị của các ký tự in hoa cộng với 32. Từ đó bạn có thể chuyển 1 ký tự từ in thường sang in hoa bằng cách trừ đi 32. Ví dụ chương trình:

#include<iostream>

using namespace std;

int main() {
    char c = 'd' - 32;
    cout << c;
    return 0;
}

Sẽ hiển thị ra màn hình

D

Từ đó bạn có thể giải bài này bằng cách duyệt qua các ký tự và nếu ký tự đó là in thường thì trừ đi 32.

Nếu bạn vẫn chưa làm được bài này thì có thể xem hướng dẫn ở bên dưới.

Hướng dẫn

Code mẫu:

#include<iostream>

using namespace std;

int main() {
    string s;
    cin >> s;
    for (int i = 0; i < s.size(); i++) {
        if (s[i] >= 'a' && s[i] <= 'z') {
            s[i] -= 32;
        }
    }
    cout << s;
    return 0;
}

Post Comment

Contact