Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Caracter en mayusculas C++

Estas en el tema de Caracter en mayusculas C++ en el foro de C/C++ en Foros del Web. Estoy tratando de imprimir la cadena con todas las ocurrencias del primer carácter en mayúsculas. Tengo esto: Código: int i; string Cadena; cout << "Escriba ...
  #1 (permalink)  
Antiguo 22/10/2015, 13:42
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Pregunta Caracter en mayusculas C++

Estoy tratando de imprimir la cadena con todas las ocurrencias del primer carácter en mayúsculas.

Tengo esto:

Código:
int i;
string Cadena;

cout << "Escriba una cadena: ";
    cin >> Cadena;

for (i = 0; i < Cadena.length(); i++)
        {
            if (Cadena[0] == Cadena[i])
                Cadena[i] = toupper(Cadena[i]);
        }

        cout << Cadena;
Si escribes: asignacion

debería imprimir: AsigAcion

pero solo sale la primera letra en mayusculas, por qué?.
Espero puedan ayudarme a indentificar el error.
  #2 (permalink)  
Antiguo 22/10/2015, 14:40
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Respuesta: Caracter en mayusculas C++

Problema resuelto cambiando la condicion a:

if (Cadena[0] == Cadena[i] || Cadena[0] == toupper(Cadena[i]))
  #3 (permalink)  
Antiguo 23/10/2015, 00:15
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 9 meses
Puntos: 3
Respuesta: Caracter en mayusculas C++

Es preferible que antes del bucle simplemente hagas cadena [0]=toupper (cadena [0] ya que lo que tienes en el bucle es otra comparación y llamada a una función y eso ralentiza el proceso. En tu caso es inapreciable pero si tuvieses que hacerlo con un archivo de texto grande si que notarías la diferencia.

Etiquetas: int, mayusculas, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:28.