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;
}
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óntrans
ahora devuelvevoid
, se pueden pasar los caracteres por referencia para modificar directamente la cadena. Aquí se muestra la funciónmain
modificada:Este bucle recorre cada carácter en la cadena
s
y lo pasa a la funcióntrans
. La funcióntrans
modifica el carácter directamente porque lo toma como referencia (char&
). Después del bucle, la cadena modificadas
se imprime usandocout
.