Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   ayuda con condiciones en un if (https://www.clubdelphi.com/foros/showthread.php?t=92940)

branncg 22-03-2018 00:53:58

ayuda con condiciones en un if
 
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í:

Código:

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:

Código PHP:

byte a(Char x)
   {
byte c;

   
// Inicializo la variable
   
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:
Código:

  if (x=='a')||(x=='A')||(x=='Á')||(x=='á') c++;
no es correcta, debería ser:
Código:

  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:
Código PHP:

int achar 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.


La franja horaria es GMT +2. Ahora son las 08:59:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi