STR02 - Chuẩn hóa tên riêng

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Có thể bạn đã biết, các danh từ riêng như tên người, tên địa danh là các danh từ riêng và chúng cần được viết hoa các chữ cái đầu mỗi từ. Tuy nhiên, người soạn thảo danh sách đã quá vội nên xảy ra lỗi viết hoa thường trong danh sách. Hãy viết 1 chương trình giúp mình chuẩn hóa lại nhé.

Input

  • Dòng 1 là số nguyên dương ~T~, số lượng tên riêng trong danh sách
  • ~T~ dòng tiếp theo, mỗi dòng là một tên riêng cần chuẩn hóa

Giới hạn

  • ~1 \le T \le 10^4~
  • Các tên riêng có độ dài không quá 100 và không có khoảng trắng thừa
  • Các tên riêng bao gồm chữ cái, số và có thể có ký tự đặc biệt (!,?,...)

Output

  • Các tên riêng đã được chuẩn hóa tương ứng trên mỗi dòng

Sample

Input #1
2
lAp Trinh Khong Kho
luyen code

Output #1
Lap Trinh Khong Kho
Luyen Code

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    lechinhhc  đã bình luận lúc 21, Tháng 4, 2024, 15:47 sửa 10

    hơi dài nhưng ac nha mn

    #include "iostream"
    #include <bits/stdc++.h>
    using namespace std;
    string text;
    int s,n;
    char m;
    bool check;
    int main() {
        cin >> s;
        cin.ignore();
        for(int i = 0 ; i < s; i++){
            check = false;
            getline(cin,text);
            n = text[0];
            if(n >= 97 and n <= 122){
                m = n-32;
                cout << m;
            }
            else{
                cout << text[0];
            }
            for(int j = 1;j < text.length();j++){
                if(text[j-1] == ' '){
                    n = text[j];
                    if(n >= 97 and n <= 122){
                        m = n-32;
                        cout << m;
                    }
                    else{
                        cout << text[j];
                    }
                }
                else if(text[j] != ' '){
                    n = text[j];
                    if(n >= 65 and n <= 90){
                        m = n+32;
                        cout << m;
                    }
                    else{
                        cout << text[j];
                    }
                }
                else{
                    cout << text[j];
                }
            }
            cout << "\n";
        }
        return 0;
    }
    

  • -2
    hai2k12  đã bình luận lúc 4, Tháng 4, 2024, 4:26

    jjhghfbh hrf js badffd aed ad awuhfd as

    w rdfojag afje


  • -1
    thangok  đã bình luận lúc 31, Tháng 3, 2024, 9:10

    include<bits/stdc++.h>

    using namespace std; int main(){ iosbase::syncwith_stdio(false); cin.tie(0);cout.tie(0); int t; cin>>t; cin.ignore(); while(t--){ string s; getline(cin,s); for(int i=0;i<s.length();i++){ s[i]=tolower(s[i]); } s[0]=toupper(s[0]); for(int i=1;i<s.length();i++){ if(s[i]!=' '&&s[i-1]==' ') s[i]=toupper(s[i]); } for(int i=0;i<s.length();i++){ cout<<s[i]; } cout<<endl; } return 0; }


  • 1
    Viet0601  đã bình luận lúc 25, Tháng 3, 2024, 4:46

    include<bits/stdc++.h>

    using namespace std; using ll =long long ; void res(string &s) { s[0]=toupper(s[0]); for(int i=1;i<s.size();i++) { s[i]=tolower(s[i]); } } int main() { int t; cin>>t; cin.ignore(); while(t--) { string s; getline(cin,s); stringstream ss(s); string tmp; vector<string> ve; while(ss>>tmp) { res(tmp); ve.push_back(tmp); } for(int i=0;i<ve.size();i++) { cout<<ve[i]; if(i!= ve.size()-1) cout<<" "; } cout<<endl; }

    }


  • 3
    hohoanghai5042011  đã bình luận lúc 29, Tháng 2, 2024, 7:04 chỉnh sửa

    Gợi ý cách làm:

    Hàm capitalize_name nhận một tham số là name, là chuỗi cần được chuyển đổi. Trong hàm này:

    Một stringstream iss được sử dụng để chia chuỗi name thành các từ riêng biệt. Mỗi từ được chuyển đổi sao cho chữ cái đầu tiên của từ trở thành chữ hoa, còn lại là chữ thường. Cách làm này được thực hiện thông qua việc lặp qua các ký tự của từ, bắt đầu từ vị trí thứ 1, và chuyển đổi các ký tự thành chữ thường. Các từ đã được chuyển đổi được lưu vào vector words. Sau đó, một stringstream oss được sử dụng để tạo ra chuỗi kết quả đã được chuyển đổi.

    Lặp qua các từ trong vector words, nối các từ lại với nhau bằng khoảng trắng và ghi vào stringstream oss. Cuối cùng, hàm trả về chuỗi kết quả đã được chuyển đổi bằng cách sử dụng phương thức str() của stringstream oss.

    Trong hàm main:

    Chương trình nhập số lượng test cases T. Sau đó, vòng lặp for chạy từ 0 đến T - 1. Mỗi lần lặp, chương trình nhập một chuỗi từ đầu vào thông qua hàm getline, sau đó in ra chuỗi đã được chuyển đổi bằng cách gọi hàm capitalize_name và xuất ra màn hình.


  • -21
    Methamphetamin  đã bình luận lúc 7, Tháng 2, 2024, 19:27

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • 1
      Mechamaru  đã bình luận lúc 22, Tháng 2, 2024, 7:07

      ko bt lm cay ak:)))))


  • 0
    nhuquynh  đã bình luận lúc 13, Tháng 1, 2024, 16:47

    sau bao nhieu lan case thi no thanh cong roi


    • 0
      CaoTrung  đã bình luận lúc 19, Tháng 2, 2024, 7:15

      sao đc vậy bạn


  • 0
    nhuquynh  đã bình luận lúc 13, Tháng 1, 2024, 15:35

    sao cu case suot thoi:')) ai chi giao them voi a


  • 0
    sadz  đã bình luận lúc 15, Tháng 12, 2023, 10:53

    =)


  • 0
    tungkq123  đã bình luận lúc 2, Tháng 12, 2023, 8:15

    .


  • -16
    Mechamaru  đã bình luận lúc 2, Tháng 12, 2023, 4:06

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • 0
      haidang3004  đã bình luận lúc 15, Tháng 12, 2023, 15:45

      ko bt lm


      • -10
        Mechamaru  đã bình luận lúc 16, Tháng 12, 2023, 14:43

        Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • 0
    kingofcode888  đã bình luận lúc 8, Tháng 11, 2023, 14:14

    hay thiệt


  • -1
    Names_  đã bình luận lúc 13, Tháng 10, 2023, 11:55

    sai test quai huhu