Otra opción puede ser comparar cada caracter de la cadena con su versión en minúscula.
Si todos los caracteres son minúsculos, entonces todavía has de comprobar si estás en el rango del tamaño.
Algo así:
Código C++:
Ver originalbool valida(string s, int n);
int main()
{
string cadena="aeddddddiou";
if (valida(cadena,0))
{
cout<<"La cadena ES valida"<<endl;
}
else
{
cout<<"La cadena NO es valida"<<endl;
}
return 0;
}
bool valida(string s, int n)
{
for (int i=0; i<s.size(); i++)
{
cout
<<"Original: "<<s
[i
]<<" - Copia: "<<(char)tolower(s
[i
])<<endl
; {
return false;
}
}
return (s.size()>=3 && s.size()<=8);
}
Te he puesto un cout en el que se va mostrando cada caracter de la cadena s y el mismo en minúscula. También puedes ver cómo se sale de la función en el momento en el que se encuentra una mayúscula.
Si cumple la primera condición, queda evaluar el tamaño.
Como verás, la función retorna el resultado de la evaluación.
Eso es equivalente a:
Código C++:
Ver originalif (s.size()>=3 && s.size()<=8)
{
return true;
}
else
{
return false;
}
Por otro lado, tal como tienes la firma de la función:
bool valida(string s, int n)
Parece que lo que quieres es que la cadena use "n" para alguna comparación de tamaño, pero tal como dices en el enunciado los límites de tamaño son un intervalo.
Si lo que quieres es que los límites de la cadena sean parametrizables, entonces deberías incluir otro parámetro en la firma de la funcion:
Código C++:
Ver originalbool valida(string s, int min, int max)
{
for (int i=0; i<s.size(); i++)
{
cout
<<"Original: "<<s
[i
]<<" - Copia: "<<(char)tolower(s
[i
])<<endl
; {
return false;
}
}
return (s.size()>=min && s.size()<=max);
}
O sencillamente eliminar ese parámetro
int n, que ahora mismo no hace nada. (Fíjate que para usarlo en el ejemplo le he tenido que dar un valor, el cual no ha sido usado)
Código C++:
Ver originalbool valida(string s)
{
for (int i=0; i<s.size(); i++)
{
cout
<<"Original: "<<s
[i
]<<" - Copia: "<<(char)tolower(s
[i
])<<endl
; {
return false;
}
}
return (s.size()>=3 && s.size()<=8);
}
Saludos!