es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Traduce lo siguiente al español. Utiliza una función de un solo parametro para cambiar las letras mayúsculas a minúsculas y viceversa (C ++). La tarea es la siguiente: Escribir una función en C ++ que pueda tomar una cadena como entrada y cambiar cada letra mayúscula a minúscula y viceversa. La función solo debe tener un parámetro, que es la cadena de entrada, y devolver una cadena que es la versión modificada de la cadena de entrada. Ejemplo de entrada: “Ceci Est Un ExEmple De ChAine De CaractEres” Ejemplo de salida: “cECI eST uN eXeMPLE dE cHaINE dE cARACTèRES” Aquí hay un posible código que implementa esta función: “`cpp #include #include using namespace std; string toggleCase(string input) { string output = “”; for(int i = 0; i < input.length(); i++) { if(isupper(input[i])) { output += tolower(input[i]); } else if(islower(input[i])) { output += toupper(input[i]); } else { output += input[i]; } } return output; } int main() { string input = "Ceci Est Un ExEmple De ChAine De CaractEres"; string output = toggleCase(input); cout << output << endl; return 0; } ``` La función `toggleCase()` toma la entrada como un parámetro y luego itera sobre cada carácter en la entrada. Si el carácter es una letra mayúscula, se convierte en minúscula y se agrega a la salida. Si el carácter es una letra minúscula, se convierte en mayúscula y se agrega a la salida. Para todos los demás caracteres (como el espacio), simplemente se agrega a la salida sin cambios. Finalmente, la función devuelve la cadena de salida modificada. En el ejemplo, la función se llamó con la cadena "Ceci Est Un ExEmple De ChAine De CaractEres" y devolvió la cadena "cECI eST uN eXeMPLE dE cHAINE dE cARACTÈRES". Note que las mayúsculas y las minúsculas se han invertido en toda la cadena.

Tengo la función trans que utiliza un solo parámetro, debe ser void y devuelve a través de c el caso opuesto de una letra de una palabra ingresada en main.

Ejemplo:
Entrada: dOgdoG
Salida: DoGDOg

La función cambia el caso, pero no puedo encontrar una forma de construir la nueva palabra o reemplazar la anterior porque sigue obteniendo errores de compilación con respecto a “char const” o “conversiones no válidas”.

El siguiente programa da el error “conversión no válida de ‘char’ a ‘const char *'”.

Solo cambié el tipo de la función con fines de ejemplo.

#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;

char trans(char c)
{
if(c >= ‘a’ && c <= ‘z’)
return c-32;
else
if(c >= ‘A’ && c <= ‘Z’)
return c+32;
}

int main()
{
char s[101], s2[101] = “”;
cin >> s;
int i;
for(i=0; i<strlen(s); i++)
{
strncat(s2, trans(s[i]), 1);
}
cout<<s2;
return 0;
}

EDITAR:

Cambié la función de char a void y eliminé el cuerpo del for.

void trans(char c)
{
if(c >= ‘a’ && c <= ‘z’)
c-=32;
else
if(c >= ‘A’ && c <= ‘Z’)
c+=32;
}

int main()
{
char s[101], s2[101] = “”;
cin >> s;
int i;
for(i=0; i<strlen(s); i++)
{
/// no sé qué poner aquí
}
cout<<s2;
return 0;
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para construir la nueva palabra y reemplazar la vieja, simplemente se puede modificar cada carácter de la cadena utilizando la función trans. Ya que la función trans ahora devuelve void, se pueden pasar los caracteres por referencia para modificar directamente la cadena. Aquí se muestra la función main modificada:

    int main()
    {
        char s[101];
        cin >> s;
        for(int i = 0; i < strlen(s); i++)
        {
            trans(s[i]); // modificar el carácter in situ
        }
        cout << s;
        return 0;
    }
    

    Este bucle recorre cada carácter en la cadena s y lo pasa a la función trans. La función trans modifica el carácter directamente porque lo toma como referencia (char&). Después del bucle, la cadena modificada s se imprime usando cout.

Comments are closed.