Conectar-se
Quem está conectado
19 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 18 Visitantes

CRP-Max

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 29/10/2011
Número de Mensagens : 510
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Tranformar alfabeto en numeros

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
avatar
Ranking : Nota A
Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Número de Mensagens : 1087
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 2
   : 1
   : 0
Ver perfil do usuáriohttp://www.mathaeuz.deviantart.com

Re: Tranformar alfabeto en numeros

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/
avatar
Data de inscrição : 29/10/2011
Número de Mensagens : 510
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Ual

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?.
avatar
Ranking : Nota A
Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Número de Mensagens : 1087
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 2
   : 1
   : 0
Ver perfil do usuáriohttp://www.mathaeuz.deviantart.com

Re: Tranformar alfabeto en numeros

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.
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum