Pedir una cadena al usuario, y de cada caracter de la cadena indicar que posición ocupa en el abecedario :
Cadena : Leonardo
L = 12
e = 5
o = 15
n = 14
a = 1
r = 18
d = 4
o = 15
Press any key...
@echo off
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "abecedario=abcdefghijklmnopqrtsuvwxyz"
set /a "longitud=0"
set "cadena2=%cadena%"
set /a "contador=1"
:bucle
if not defined cadena (goto:next)
set "cadena=%cadena:~1%"
set /a "longitud+=1"
goto:bucle
:next
set /a "longitud-=1"
for /l %%$ in (0,1,%longitud%) do (
call :etiqueta !cadena2:~%%$,1!
)
goto:eof
:etiqueta
set /a "contador=1"
set "caracter=%1"
for /l %%_ in (0,1,25) do (
if /i ["!abecedario:~%%_,1!"]==["%caracter%"] (call:view !caracter! !contador!)
set /a contador+=1
)
goto:eof
:view
echo %1 = %2
goto:eof
El mismo ejercicio en C++:
#include <iostream>
using namespace std;
char abecedario[25];
int pos_abc(char letra,char abc[]=abecedario);
int main()
{
char cadena[50];
int i=0;
for (char b='a';b<='z';b++)
{
abecedario[i]=b;
i++;
}
cout<<"Introduzca palabra: ";
cin>>cadena;
cout<<endl;
for (int f=0;f<strlen(cadena);f++)
{
cout<<cadena[f]<<" = "<<pos_abc(cadena[f])<<endl;
}
cout<<endl;
system("pause");
}
int pos_abc(char letra,char abc[])
{
for (int i=0;i<strlen(abc);i++) //recorre la cadena
{
if (letra==abc[i]) { return i+1; } //Devuelve posicion
}
return -1; //Si llega a esta parte, es decir, la letra no esta
//en el abecedario devolvera -1
}
La función también acepta abecedarios personalizados.
Aqui pongo la solución en C:
#include <stdio.h>
signed int busqueda(char caracter);
int main(void)
{
char cadena[200];
printf("Cadena : ");
scanf("%199[^\n]", cadena);
for(signed int i = 0; cadena[i] != '\0'; i++)
printf("%c = %d\n", cadena[i], busqueda(cadena[i]));
return 0;
}
signed int busqueda(char caracter)
{
char abecedario[] = "abcdefghijklmnopqrstuvwxyz";
for(signed int i = 0; abecedario[i] != '\0'; i++)
if(caracter == abecedario[i])
return i+1;
}
Salida:
C:\>dudas
Cadena : Guitarra
G = 16
u = 21
i = 9
t = 20
a = 1
r = 18
r = 18
a = 1
C:\>
¡¡¡Buenas!!!
Aqui va uno que tambien reconoce mayusculas.
#include <stdio.h>
#include <stdlib.h>
#define MAX_CAD 50
int main (int argc,char* argv[])
{
char cad[MAX_CAD],i;
printf("Introduce una cadena: ");
fgets(cad,MAX_CAD,stdin);
for(i=0; cad[i]!='\n' ; i++)
{
if(cad[i]>='a' && cad[i]<='z')
printf("%c = %d\n", cad[i], cad[i] - 'a' + 1);
else if(cad[i]>='A' && cad[i]<='Z')
printf("%c = %d\n", cad[i], cad[i] - 'A' + 1);
else if(cad[i]==' ')
printf("ESPACIO\n");
else
printf("caracter no reconocido.\n");
}
system("PAUSE");
return 0;
}
¡¡¡Un saludo!!!
Este también reconoce mayusculas :
#include <stdio.h>
#include <ctype.h>
signed int busqueda(char caracter);
int main(void)
{
char cadena[200];
printf("Cadena : ");
scanf("%199[^\n]", cadena);
for(signed int i = 0; cadena[i] != '\0'; i++)
printf("%c = %d\n", cadena[i], busqueda(cadena[i]));
return 0;
}
signed int busqueda(char caracter)
{
char abecedario[] = "abcdefghijklmnopqrstuvwxyz";
for(signed int i = 0; abecedario[i] != '\0'; i++)
if(tolower(caracter) == abecedario[i])
return i+1;
}
Salida:
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.
Pues si, y queda mas claro.
¡¡¡Un saludo!!!