Editorial for Định dạng tên


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
void xoa_ktdb(char s[]){
    char c[100];
    int id = 0;
    for(int i = 0; i < strlen(s); i++){
        if(isalpha(s[i]) || s[i] == ' '){
            c[id] = s[i];
            id++;
        }
    }
    c[id] = '\0';
    strcpy(s, c);
}
void gom_khoang_trang(char s[]){
    char newstring[100];
    int id = 0, check = 1;
    /*
    Biến check dùng để kiểm tra kí tự có phải là chữ đầu 
    Nếu phải thì là 1 ngược lại là 0
    */
    for(int i = 0; i < strlen(s); i++){
        /*
        Sau khi loại bỏ kí tự đặt biệt thì chúng ta chỉ cần xử
        lý các khoảng trắng và viết hoa

        3 cái if 
        + đầu tiên là kiểm tra nếu là chữ và check = 1 là kí tự đầu tiên 
        + Kiểm tra khoảng trắng đó có phải là khoảng trắng đầu tiên không
        + Kiểm tra chữ chữ cái bình thường
        + Khi nó không thuộc cả 3 trường hợp trên thì suy ra 
        kí tự của chúng ta đang là khoảng trắng -> chữ xuất hiện tiếp theo là chữ đầu của 1 từ nên check = 1

        */
        if(isalpha(s[i]) && check == 1){
            newstring[id] = toupper(s[i]);
            id++;
            check = 0;
        }else if(id > 0 && s[i] == ' ' && isalpha(newstring[id - 1])){
            newstring[id] = ' ';
            id++;
            check = 1;
        }else if(isalpha(s[i])) {
            newstring[id] = s[i];
            id++;
        }else check = 1;
    }
    newstring[id] = '\0';
    strcpy(s, newstring);
}
void solve()
{
    char s[100];
    fgets(s, sizeof(s), stdin);
    xoa_ktdb(s);
    gom_khoang_trang(s);
    puts(s);
    // printf("%c", s[strlen(s) - 1]);

 }


Comments

Please read the guidelines before commenting.


There are no comments at the moment.