Duda en esta función
Me podrian dar un tip del como poder resolver este dilema, se trata de convertir un char a char * dentro de esta función
int compara_letras(char letra)
{
char *abecedario[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
short int posicion=0;
for(short int a=0;a<=26;a++)
{
if(letrad==abecedario[a])
posicion=a;
}
printf("%d",posicion);
return posicion;
}
Lo que quiero es comparar la letra que envio y saber cual es la posicion de esa letra dentro del abecedario, si para poder enterderlo mejor necesito poder el resto del código por favor diganme.
(Por cierto gracias a noel_slow por la ayuda antes proporcionada, no pude darte las gracias).
int compara_letras(char letra)
{
char *abecedario[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
short int posicion=0;
for(short int a=0;a<=26;a++)
{
if(letrad==abecedario[a])
posicion=a;
}
printf("%d",posicion);
return posicion;
}
Lo que quiero es comparar la letra que envio y saber cual es la posicion de esa letra dentro del abecedario, si para poder enterderlo mejor necesito poder el resto del código por favor diganme.
(Por cierto gracias a noel_slow por la ayuda antes proporcionada, no pude darte las gracias).
Un char es un valor ASCII, es decir, en el fondo, \'a\' es el valor 97 (decimal)
La posición de x (valor 120) dentro del abecedario sería:
char cCurrent = \'x\';
int iPosicion = cCurrent - \'a\' + 1;
Le sumas 1, para tener un "array" basado en 1: asi, la \'a\' tiene la posicion 1 y no la 0.
Salu2
La posición de x (valor 120) dentro del abecedario sería:
char cCurrent = \'x\';
int iPosicion = cCurrent - \'a\' + 1;
Le sumas 1, para tener un "array" basado en 1: asi, la \'a\' tiene la posicion 1 y no la 0.
Salu2
int compara_letras(char *letra) {
char *abecedario[26] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
for(int a = 0; a <= 25; a++)
if (strcmp(letra, abecedario[a]) == 0)
return ++a;
}
void main(void) {
cout << compara_letras("C");
getch();
}
char *abecedario[26] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
for(int a = 0; a <= 25; a++)
if (strcmp(letra, abecedario[a]) == 0)
return ++a;
}
void main(void) {
cout << compara_letras("C");
getch();
}
se me olvidaba que para usar strcmp debes hacer un #include <string.h>, para el cout << ....; debes usar #include <iostream.h>, y getch(); debes usar #include <conio.h>
Rev, me parece que si necesitas comparar caracteres con los contenidos en un "abecedario", tal vez sea mejor usar una estructura diferente, más eficiente. Por ejemplo, en lugar de guardar el abecedario en una array de cadenas de caracteres, podría ser sólo un array de caracteres.
Lo que sería:
char *abecedario = {'A','B','C','D', (...etcétera...) };
y así también funcionará tu
for(short int a=0; a<=26; a++)
{
if(letrad==abecedario[a])
posicion=a;
}
Alejandro
Lo que sería:
char *abecedario = {'A','B','C','D', (...etcétera...) };
y así también funcionará tu
for(short int a=0; a<=26; a++)
{
if(letrad==abecedario[a])
posicion=a;
}
Alejandro
> if(letra==abecedario[a])
yo insisto: abecedario es un array de cadenas de caracteres y no un array de caracteres. En tu comparación, "letra" es un caracter; en cambio, "abecedario[a]" es una cadena de caracteres.
Jamás, nunca esa comparación te va a dar "true".
A ver: supongamos que abecedario[a] == "N"; como "N" es una cadena, está formada por el caracter 'N' más el terminador nulo ' '; o sea: N = {'N', ' '}; Entonces, abecedario[a] es un puntero y no un carácter.
Ahora supongamos que Letra == 'N';
¿Te parece que 'N' puede ser == &abecedario[0] ?
Alejandro
yo insisto: abecedario es un array de cadenas de caracteres y no un array de caracteres. En tu comparación, "letra" es un caracter; en cambio, "abecedario[a]" es una cadena de caracteres.
Jamás, nunca esa comparación te va a dar "true".
A ver: supongamos que abecedario[a] == "N"; como "N" es una cadena, está formada por el caracter 'N' más el terminador nulo ' '; o sea: N = {'N', ' '}; Entonces, abecedario[a] es un puntero y no un carácter.
Ahora supongamos que Letra == 'N';
¿Te parece que 'N' puede ser == &abecedario[0] ?
Alejandro
