PDA

Ver la Versión Completa : ayuda con condiciones en un if


branncg
22-03-2018, 00:53:58
hola a todos, tengo una funcion que al introducir un caracter tiene que devolver 1 si es que contiene la letra 'a', hasta ahí lo hace todo bien, ahora el problema viene cuando quiero que reconozca si es 'a', 'A', 'Á', ó 'á', osea que reconozca si es a minúscula, mayúscula, con acento o sin acento, no se cual sería la forma correcta de escribir el código, que lo tengo así:

byte a(Char x)
{byte c;
if (x=='a')||(x=='A')||(x=='Á')||(x=='á') c++;
return c;
}

pero no me funciona, alguien que me ayude para que reconozca cualquier 'a' (mayúscula, minúscula...etc)

muchas gracias de antemano.

duilioisola
22-03-2018, 09:30:20
Supongo que te falta inicializar la variable c.
No conozco a C, pero si es como Delphi, las variables cuando las creas contienen lo que haya habído en la posición de memoria que ocupan.
Las debes inicializar:

byte a(Char x)
{byte c;

// Inicializo la variable
c = 0;

// Comparo el parametro con los valores validos
if (x=='a')||(x=='A')||(x=='Á')||(x=='á') c++;

return c;
}

ecfisa
22-03-2018, 12:25:59
Hola.

Como bien te indica duilioisola, debes inicializar la variable local 'c' por que de otro modo el resultado es impredecible, pero la sintáxis:

if (x=='a')||(x=='A')||(x=='Á')||(x=='á') c++;

no es correcta, debería ser:

if (x=='a'|| x=='A' || x=='Á' || x=='á') c++;

Por otro lado, si solo se trata de devolver uno si es una 'A','Á','a','á' y cero de otro modo, podrías hacer:

int a( char x )
{
return x=='A' || x=='a' || x=='Á' || x=='á';
}


Saludos :)

Ñuño Martínez
22-03-2018, 18:36:24
Estoy por meter un susto, pero el tema de los acentos sólo te funcionará con ISO, no con UNICODE, ya que en este último cada carácter puede ser de más de un octeto, en especial los acentuados.