Verificación simple del formato de oración final en inglés de 2017 (20 puntos)

L1-8 2017 verificación simple del formato de oración final en inglés (20 puntos)

En la escritura en inglés, la primera letra de una oración suele estar en mayúscula y el resto en minúsculas, excepto la palabra "I". Las palabras están separadas por un espacio. La oración se rompe con "," y el final de la oración se termina con ".", ", "Y". "No necesita un espacio para separar las palabras anteriores. Los editores de texto como Word generalmente corrigen automáticamente las oraciones en inglés que ingresamos de acuerdo con las reglas anteriores. Escriba una función para ingresar una oración en inglés en el formato correcto de acuerdo con las reglas anteriores. Por ejemplo, para la oración de entrada en inglés "Este es un ejemplo con un error.", Dado que el carácter "E" de la palabra "Ejemplo" debe estar en minúscula "e", el formato correcto de la oración se emite después de la revisión. Este es un ejemplo con Un error.

Nota:

1. Cada conjunto de datos de prueba solo incluye una oración en inglés que termina con el carácter ".".

2. Los caracteres que aparecen en la oración en inglés de entrada incluyen veintiséis letras mayúsculas en inglés (código ASCII 65-90), veintiséis letras en inglés minúsculas (código ASCII 97-122), "," y ".", Espacios personaje.
Formato de entrada:

Una oración en inglés que termina con el carácter ".".
Formato de salida:

La salida de la oración de entrada en inglés después de la corrección de errores de formato.
Muestra de entrada:

Este es un ejemplo con un error.

Salida de muestra:

Este es un ejemplo con un error.

Idea
Pruebe estos puntos de prueba y está bien
ingresar

i ajhas HjaHHAI ,, ajj, I.
,,, sjhhhqHjGAHhIjjas ,.
S, djojd doja kdaI.

Salida (correspondencia uno a uno con la entrada)

Yo ajhas hjahhai, ajj, yo
. ,,, sjhhhqhjgahhijjas ,.
S ,, djojd doja kdai.

punto clave
1, donde haya una coma, se debe agregar un espacio después de ella.
2 La primera letra está en mayúscula
3. La i en forma de "i", "i," i. debe estar en mayúscula
4 Terminada con un punto y los demás caracteres en minúscula

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    string s1;
    getline(cin, s1);
    for(int i = 0; i < s1.size(); i++)
    {
    
    
        s1[i] = tolower(s1[i]);
        if(s1[i] == ',') // 在逗号后面加空格
            s1.insert( ++i, " ");
    }
    string s2 = s1;
    stringstream ss(s1); //流输出取消多个连续空格
    string ans = "";
    while(ss >> s1)
    {
    
    
        if(s1.size() == 1 && (s1[0] == ',' || s1[0] == '.'))//如果是标点
        {
    
    
            if(ans.size() == 0) ans = s1 + " ";//ans第一个字符不为空格
            else //ans中有单词了
            {
    
    
                int x3 = ans.size();
                if(!isalpha(ans[x3 - 2]))   ans = ans + s1 + " "; //如果上个单词为标点
                else ans.insert(x3 - 1, s1);//不为标点直接插入上个单词右侧
            }
        }
        else    ans = ans + s1 + " ";//单词直接相加
    }
    int x1 = 0;
    while(x1 != -1)
    {
    
    
        x1 = ans.find(" i", x1);
        if(x1 == -1)	break;
        if(!isalpha(ans[x1 + 2])) // 如果i后面是标点或者空格就变成大写
            ans[x1 + 1] = 'I';
        x1 ++;
    }
    ans[0] = toupper(ans[0]);//首字母大写
    ans.erase(ans.size() - 1); //去掉最后一个空格
    cout << ans << endl;
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_45778406/article/details/109320135
Recomendado
Clasificación