Tranformar alfabeto en numeros

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Tranformar alfabeto en numeros

Mensagem por God_of_war425 em Sab 12 Maio 2012, 18:47

Eu queria saber como posso transformar o alfabeto em numero exemplo:

A = 1
B = 2
C = 3
D = 4
E = 5

e assim até z como posso fazer iso?

eu digito eae em numeros ficaria assim
515 eu queria saber como fazer iso.agradeso a quem responde.flw

God_of_war425

Número de Mensagens : 510
Idade : 18
Data de inscrição : 29/10/2011
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Tranformar alfabeto en numeros

Mensagem por MatheusReis em Sab 12 Maio 2012, 19:28

O computador usa um código numérico para identificar as letras, que vai de 0 a 255 (no nosso padrão). A função ord('A') retorna esse número. (no caso, ele vai retornar o valor de A), enquanto a função char() faz o inverso (converte o numero em letra, segundo o código). O alfabeto segue na ordem 'normal' nesse código numérico(ex: se A for 28, B é 29), então podemos converter as letras usando isso:

Código:
valor_numerico = ord(letra) - ord('A') +1;

Onde letra é a letra que queremos converter para número.
Testes de mesa:

Se a letra for A

valor_numerico = ord('A') - ord('A') +1;
valor_numerico = 1;

Já sabemos que com o valor inicial a conta dá certo. Tentemos outra letra:

Se a letra for D

valor_numerico = ord('D') - ord('A') +1

Sabemos que a diferença de A para D é 3;

valor_numerico = 3 + 1;
valor_numerico = 4;

Novamente bateu com a tabela.

Mas essa equação só converte uma única letra. Para montar um número a partir de uma sequencia de letras teremos que tornar esse sistema mais complexo. Precisaremos usar comandos de tratamento de strings. (eles lidam com textos ou pedaços de texto, assim podemos fazer coisas como inverter uma frase ou construir novas apartir de trechos de outras.)

Para tratar letras como números (ex: AEC vale 153) precisaremos verificar cada letra dentro do texto, encontrar seu número correspondente e assim montar o número final, convertido.

Eu vou postar o código completo, mas vou explicar os seus trechos:
Código:
numero_em_letras=get_string('Insira as letras a serem convertidas','');
//esse comando lança uma caixa de diálogo para pegar o número na forma de letras, e os salva em numero_em_letras
tamanho=string_length(numero_em_letras);
//pega a largura (número de letras) desse numero.
//
//Para converter o numero em letras PRESERVANDO as posições deles, montaremos um novo texto.
//Ele conterá o numero convertido mas na forma de texto, para que no fim usemos uma função mais fácil.
//vamos iniciar esse texto como sendo vazio
texto='';
for(i=1;i<=tamanho;i+=1){
//inicia um loop onde i varia de 1 até a posição da última letra do número inserido(variável tamanho).
//assim, poderemos converter cada número, 1 a 1, e montar o novo.
letra_atual=string_char_at(numero_em_letras,i);
//pega a letra na posição i dentro do numero, para que possamos convertê-la
valor_numerico=ord(letra_atual)-ord('A')+1;
//usando a equação mostrada acima, convertemos a letra atual em numero.
//
//agora, converteremos o numero em texto novamente, para montar uma forma convertida.
//ex: "a" vira "1" ao invéz de 1.
texto=texto+string(valor_numerico);
//string converte numero em texto
//ex: string(15) é "15"
};
//Agora vamos mostrar uma mensagem na tela comparando o numero_em_letras com a forma convertida.
show_message(numero_em_letras + ' = ' + texto);
//a variável texto ainda é uma string, falta convertê-lo para um número. Faremos isso com a função real()
//ex: real('856') é 856
valor_convertido=real(texto);
Recomendo colar no GM antes de ler, ajuda a visualizar.

Mas tem um problema no seu pedido. Se queremos usar o alfabeto como números, não podemos usar todos.
Se usarmos de A a Z, os valores convertidos irão de 1 a 27, quando na verdade os algarismos vão de 0 a 9. Então, você deverá usar apenas 10 letras nessa conversão.

A equação valor_numerico = ord(letra) - ord('A') +1 não consegue obter 0 usando letras. Então eu recomendo que faça com que as letras sejam de A a J, e que A seja 0. Isso muda a equação:

Código:
valor_numerico = ord(letra) - ord('A');

Espero ter ajudado. Até o/

MatheusReis

Ranking : Nota A
Número de Mensagens : 1087
Idade : 23
Data de inscrição : 13/01/2010
Notas recebidas : B-A-A
Reputação : 30
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 0

http://www.mathaeuz.deviantart.com

Voltar ao Topo Ir em baixo

Ual

Mensagem por God_of_war425 em Sab 12 Maio 2012, 19:32

So avizando que não vou clicar e copiar,vou dar crtl+c kkkkk zuera
nossa fico codigo enorme,vlw ajudo vou estudar seu codigo vlw

alguem aqui joga minicraft?.

God_of_war425

Número de Mensagens : 510
Idade : 18
Data de inscrição : 29/10/2011
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Tranformar alfabeto en numeros

Mensagem por MatheusReis em Sab 12 Maio 2012, 19:47

O código é pequeno, o que ocupou espaço foram as explicações. Se algo não ficou claro, apenas pergunte.

Minecraft? Conheço isso não.

MatheusReis

Ranking : Nota A
Número de Mensagens : 1087
Idade : 23
Data de inscrição : 13/01/2010
Notas recebidas : B-A-A
Reputação : 30
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 0

http://www.mathaeuz.deviantart.com

Voltar ao Topo Ir em baixo

Re: Tranformar alfabeto en numeros

Mensagem por Conteúdo patrocinado Hoje à(s) 21:06


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum