Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Byron15 en 17 Febrero 2022, 21:10 pm



Título: Necesito hacer un programa en C
Publicado por: Byron15 en 17 Febrero 2022, 21:10 pm
El programa me tiene que decir por ejemplo si yo introduzco la letra "A" o "a" que me diga 1 si introduzco la Z que me diga 27, o sea que me diga la posicion de la letra en el alfabeto


Título: Re: Necesito hacer un programa en C
Publicado por: Eternal Idol en 17 Febrero 2022, 21:19 pm
¿Y que hiciste hasta ahora? Aca no se hacen tareas, se resuelven dudas puntuales.


Título: Re: Necesito hacer un programa en C
Publicado por: Byron15 en 17 Febrero 2022, 21:27 pm
Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. signed int busqueda(char caracter);
  4. int main()
  5. {
  6.    char cadena[200];
  7.    printf("Cadena : ");
  8.    scanf("%199[^\n]", cadena);
  9.    for(signed int i = 0; cadena[i] != '\0'; i++)
  10.    printf("%c = %d\n", cadena[i], busqueda(cadena[i]));
  11.    return 0;
  12. }
  13. signed int busqueda(char caracter)
  14. {
  15.    char abecedario[] = "abcdefghijklmnopqrstuvwxyz";
  16.    for(signed int i = 0; abecedario[i] != '\0'; i++)
  17.    if(tolower(caracter) == abecedario[i])
  18.    return i+1;
  19. }

Tengo esto, pero al intentar ejecutarlo me da un error.

MOD: Etiquetas de Código GeSHi


Título: Re: Necesito hacer un programa en C
Publicado por: K-YreX en 17 Febrero 2022, 22:22 pm
Estaría bien si te da un error, que pusieras el error para facilitar el trabajo a quienes intentan ayudar...

Seguramente el error diga algo así como que la función 'busqueda()' no devuelve ningún valor y es porque qué pasa si metes un número? La función busqueda() recorre todas las letras, no encuentra el número y qué? Qué devuelve? Ahora mismo: NADA.

Por estandarizar se suele hacer que cuando no se encuentra un índice, se devuelva un -1:
Código
  1. int findAlphabeticIndex(char character) {
  2.  int index = -1;
  3.  char alphabet[] = "abcd...";
  4.  char lower_character = tolower(character);
  5.  for(int i = 0; i < strlen(alphabet) && index == -1; ++i)
  6.    if(lower_character == alphabet[i]) index = i + 1;
  7.  return index;
  8. }

O sino... MAGIC!!  :o :o
Código
  1. int findAlphabeticIndex(char character) {
  2.  char lower_character = (character >= 'A' && character <= 'Z') ? character + ('a' - 'A') : character;
  3.  return (lower_character >= 'a' && lower_character <= 'z') ? lower_character - 'a' + 1 : -1;
  4. }

PD: Yo cambiaría la línea 8 de tu programa por:
Código
  1. fgets(cadena, 200, stdin);


Título: Re: Necesito hacer un programa en C
Publicado por: fary en 17 Febrero 2022, 22:29 pm
Mirando la tabla ASCII.

(https://itiem1.files.wordpress.com/2010/10/codigo-ascii.jpg)

Mi idea.

Código
  1. int Busqueda(char Caracter)
  2. {
  3.    if ((int)Caracter >= 97 )
  4.    {
  5.        return ((int)Caracter) - 96;
  6.    }else{
  7.        return ((int)Caracter) - 64;
  8.    }
  9. }


Título: Re: Necesito hacer un programa en C
Publicado por: dario01dr en 19 Febrero 2022, 15:04 pm
Hola, te dejo una idea de como hacerlo
Salu2.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. int main() {
  6.    char alfabeto[26] = {'a','b','c','d','e','f',
  7.        'g','h','i','j','k','l','m','n','o','p','q',
  8.        'r','s','t','u','v','w','x','y','z'
  9.    };
  10.    char letra;
  11.    int i;
  12.  
  13.    printf("Ingrese una letra del alfabeto: ");
  14.    scanf("%c",&letra);
  15.    letra = tolower(letra);
  16.  
  17.    for (i=0; i<strlen(alfabeto); i++) {
  18.        if (letra == alfabeto[i])
  19.            printf("%d",i+1);
  20.    }
  21.  
  22.    return 0;
  23. }
  24.  
  25.