Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: leogtz en 12 Abril 2009, 01:54 am



Título: Posición en el abecedario [Batch]
Publicado por: leogtz en 12 Abril 2009, 01:54 am
Pedir una cadena al usuario, y de cada caracter de la cadena indicar que posición ocupa en el abecedario :
Código:
Cadena : Leonardo
L = 12
e = 5
o = 15
n = 14
a = 1
r = 18
d = 4
o = 15
Press any key...
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :code
  4. set /p "cadena=Cadena : "
  5. if not defined cadena (goto:code)
  6. set "abecedario=abcdefghijklmnopqrtsuvwxyz"
  7. set /a "longitud=0"
  8. set "cadena2=%cadena%"
  9. set /a "contador=1"
  10. :bucle
  11. if not defined cadena (goto:next)
  12. set "cadena=%cadena:~1%"
  13. set /a "longitud+=1"
  14. goto:bucle
  15. :next
  16. set /a "longitud-=1"
  17. for /l %%$ in (0,1,%longitud%) do (
  18. call :etiqueta !cadena2:~% style="color: #448888;">%$,1!
  19. )
  20. goto:eof
  21. :etiqueta
  22. set /a "contador=1"
  23. set "caracter=%1"
  24. for /l %%_ in (0,1,25) do (
  25. if /i ["!abecedario:~% style="color: #448888;">%_,1!"]==["% style="color: #448888;">caracter%"] (call:view !caracter! !contador!)
  26. set /a contador+=1
  27. )
  28. goto:eof
  29. :view
  30. echo %1 = %2
  31. goto:eof
  32.  


Título: Re: Posición en el abecedario [Batch]
Publicado por: DarkItachi en 11 Mayo 2009, 14:38 pm
El mismo ejercicio en C++:

Código
  1. #include <iostream>
  2. using namespace std;
  3. char abecedario[25];
  4. int pos_abc(char letra,char abc[]=abecedario);
  5. int main()
  6. {
  7.    char cadena[50];
  8.    int i=0;
  9.    for (char b='a';b<='z';b++)
  10.    {
  11.        abecedario[i]=b;
  12.        i++;
  13.    }
  14.    cout<<"Introduzca palabra: ";
  15.    cin>>cadena;
  16.    cout<<endl;
  17.    for (int f=0;f<strlen(cadena);f++)
  18.    {
  19.        cout<<cadena[f]<<" = "<<pos_abc(cadena[f])<<endl;
  20.    }
  21.    cout<<endl;
  22.    system("pause");
  23. }
  24. int pos_abc(char letra,char abc[])
  25. {
  26.    for (int i=0;i<strlen(abc);i++) //recorre la cadena
  27.    {
  28.        if (letra==abc[i]) { return i+1; } //Devuelve posicion
  29.    }
  30.    return -1; //Si llega a esta parte, es decir, la letra no esta
  31.               //en el abecedario devolvera -1
  32. }
  33.  

La función también acepta abecedarios personalizados.


Título: Re: Posición en el abecedario [Batch]
Publicado por: leogtz en 7 Junio 2009, 19:47 pm
Aqui pongo la solución en C:
Código
  1. #include <stdio.h>
  2. signed int busqueda(char caracter);
  3. int main(void)
  4. {
  5.    char cadena[200];
  6.    printf("Cadena : ");
  7.    scanf("%199[^\n]", cadena);
  8.    for(signed int i = 0; cadena[i] != '\0'; i++)
  9.    printf("%c = %d\n", cadena[i], busqueda(cadena[i]));
  10.    return 0;
  11. }
  12. signed int busqueda(char caracter)
  13. {
  14.    char abecedario[] = "abcdefghijklmnopqrstuvwxyz";
  15.    for(signed int i = 0; abecedario[i] != '\0'; i++)
  16.    if(caracter == abecedario[i])
  17.    return i+1;
  18. }
  19.  
Salida:

Código:
C:\>dudas
Cadena : Guitarra
G = 16
u = 21
i = 9
t = 20
a = 1
r = 18
r = 18
a = 1

C:\>


Título: Re: Posición en el abecedario [Batch]
Publicado por: Eliptico en 9 Junio 2009, 04:55 am
¡¡¡Buenas!!!

Aqui va uno que tambien reconoce mayusculas.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX_CAD 50
  5.  
  6. int main (int argc,char* argv[])
  7. {
  8.    char cad[MAX_CAD],i;
  9.  
  10.    printf("Introduce una cadena: ");
  11.    fgets(cad,MAX_CAD,stdin);
  12.  
  13.    for(i=0; cad[i]!='\n' ; i++)
  14.    {
  15.        if(cad[i]>='a' && cad[i]<='z')
  16.            printf("%c = %d\n", cad[i], cad[i] - 'a' + 1);
  17.        else if(cad[i]>='A' && cad[i]<='Z')
  18.            printf("%c = %d\n", cad[i], cad[i] - 'A' + 1);
  19.        else if(cad[i]==' ')
  20.            printf("ESPACIO\n");
  21.        else
  22.            printf("caracter no reconocido.\n");
  23.    }
  24.  
  25.    system("PAUSE");
  26.  
  27.    return 0;
  28. }
  29.  

¡¡¡Un saludo!!!


Título: Re: Posición en el abecedario [Batch]
Publicado por: leogtz en 9 Junio 2009, 07:44 am
Este también reconoce mayusculas :
Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. signed int busqueda(char caracter);
  4. int main(void)
  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. }
  20.  

Salida:
Código:
C:\>codes
Cadena : LaGuitarra
L = 12
a = 1
G = 7
u = 21
i = 9
t = 20
a = 1
r = 18
r = 18
a = 1

C:\>

Saludos.


Título: Re: Posición en el abecedario [Batch]
Publicado por: Eliptico en 9 Junio 2009, 18:39 pm
Pues si, y queda mas claro.

¡¡¡Un saludo!!!