Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Miguel97 en 8 Abril 2016, 02:24 am



Título: NEcesito ayuda con un encriptador
Publicado por: Miguel97 en 8 Abril 2016, 02:24 am
Estoy empezando a programar y necesito ayuda para asignar valores. Tengo que transformar una palabra en numeros
osea 0=a -z=25 el problema esque no se como hacer esa comparacion se me ocurrio hacerlo con cadenas char .
alguna sugerencia?


Título: Re: NEcesito ayuda con un encriptador
Publicado por: engel lex en 8 Abril 2016, 02:31 am
los char no son solo letras, son unas variables de 8bit, es decir se pueden interpretar como numeros... puedes hacer

Código
  1. int letra = 'a';
  2. cout<< letra << endl;

y verás que te da el numero, así que para hacer que a sea 0 y z 25 es solo

Código
  1. int letra = char_otro-'a';
  2. cout<< letra << endl;


Título: Re: NEcesito ayuda con un encriptador
Publicado por: Gunhack en 10 Abril 2016, 02:58 am
Date una idea, el lenguaje C convierte automáticamente los caracteres a su código ASCII correspondiente cuando guardas un tipo char en un tipo int, ahora, en el código ASCII, a la letra "a" le corresponde el numero 97, lo demás son sumas o restas ;D

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.  
  7.    int letra = 'a' - 97;
  8.    cout << letra << " " << endl;
  9.  
  10.    for(int i = 0; i < 25; i++) {
  11.  
  12.        cout << ('a' + i) - 97 << " ";
  13.    }
  14.  
  15.    cout << endl;
  16.  
  17.    for(int i = 0; i < 26; i++) {
  18.  
  19.        cout << (char)('a' + i) << " ";
  20.    }
  21. }


Título: Re: NEcesito ayuda con un encriptador
Publicado por: MAFUS en 11 Abril 2016, 16:07 pm
Es un error pensar que los caracteres se guardan como enteros positivos. El estándar C dice que eso depende de la implementación. Para convertir una letra minúscula del alfabeto a un rango de 0 a 26 no se deben usar los números mágicos. Se debe usar la 'a' minúscula. El estándar ASCII nos asegura que 'a' estará al principio de los alfabetos de minúsculas.
ASCII en C puede tener un rango de -128 a 127 o de 0 a 255. Así para el número de la 'b', para que sea 1, se debe hacer 'b'-'a'.


Título: Re: NEcesito ayuda con un encriptador
Publicado por: m0rf en 11 Abril 2016, 18:00 pm
los char no son solo letras, son unas variables de 8bit, es decir se pueden interpretar como numeros... puedes hacer

Código
  1. int letra = 'a';
  2. cout<< letra << endl;

y verás que te da el numero, así que para hacer que a sea 0 y z 25 es solo

Código
  1. int letra = char_otro-'a';
  2. cout<< letra << endl;

+1

Ya que hay un mod en el hilo, propongo que se incluya "encriptador" en la lista para que se substituya por cifrador.

Lo siento porque no tiene nada que ver con el tema pero lo dejo caer a ver si hacemos de ehn un lugar sin la palabra encriptarr y variantes.

Saludos.


Título: Re: NEcesito ayuda con un encriptador
Publicado por: ivancea96 en 11 Abril 2016, 18:57 pm
+1

Ya que hay un mod en el hilo, propongo que se incluya "encriptador" en la lista para que se substituya por cifrador.

Lo siento porque no tiene nada que ver con el tema pero lo dejo caer a ver si hacemos de ehn un lugar sin la palabra encriptarr y variantes.

Saludos.

Guste o no, desde que la palabra entra en el diccionario de la RAE, es correcta.
Lo único curioso es que "_encriptar" queda como un término algo inestable, ya que "_desencriptar" sí que no existe.


Título: Re: NEcesito ayuda con un encriptador
Publicado por: Gunhack en 12 Abril 2016, 02:40 am
Es un error pensar que los caracteres se guardan como enteros positivos. El estándar C dice que eso depende de la implementación. Para convertir una letra minúscula del alfabeto a un rango de 0 a 26 no se deben usar los números mágicos. Se debe usar la 'a' minúscula. El estándar ASCII nos asegura que 'a' estará al principio de los alfabetos de minúsculas.
ASCII en C puede tener un rango de -128 a 127 o de 0 a 255. Así para el número de la 'b', para que sea 1, se debe hacer 'b'-'a'.

Gracias por el dato! Eso no lo sabía  :( Y en el estándar de C++ sucede lo mismo?


Título: Re: NEcesito ayuda con un encriptador
Publicado por: m0rf en 12 Abril 2016, 03:50 am
Guste o no, desde que la palabra entra en el diccionario de la RAE, es correcta.
Lo único curioso es que "cifrar" queda como un término algo inestable, ya que "descifrar" sí que no existe.

http://dle.rae.es/?id=Ceu04o5 (http://dle.rae.es/?id=Ceu04o5)

Saludos.


Título: Re: NEcesito ayuda con un encriptador
Publicado por: ivancea96 en 12 Abril 2016, 09:39 am
http://dle.rae.es/?id=Ceu04o5 (http://dle.rae.es/?id=Ceu04o5)

Saludos.

Evidentemente. Puse _encriptar y _desencriptar. lo que no sabía es que el foro corrigiese esas palabras automáticamente y sin avisar.


Título: Re: NEcesito ayuda con un encriptador
Publicado por: m0rf en 12 Abril 2016, 10:54 am
Evidentemente. Puse _encriptar y _desencriptar. lo que no sabía es que el foro corrigiese esas palabras automáticamente y sin avisar.

A mí me paso lo mismo en el tema que cree y me provoco muchos dolores de cabeza hasta que pille que lo modificaba el foro xD.

Que sepas que eres el puto amo porque no existe pensaba que decías descifrar, ahora en serio estos de la rae tienen problemas o algo? Como puedes incluir encriptarr y no desencriptarr? Se van a quedar los datos ahí "escrambleados" para siempre ahhaahahha.

Épico simplemente. Saludos.


Título: Re: NEcesito ayuda con un encriptador
Publicado por: HardForo en 14 Abril 2016, 22:56 pm
Obviamente excelente comentario el de @MAFUS ya que la mayoria no lo sabiamos  ;D

Respecto de "los char no son solo letras, son unas variables de 8bit, es decir se pueden interpretar como numeros... puedes hacer"  mas bien los chars son constantes


Título: Re: NEcesito ayuda con un encriptador
Publicado por: ivancea96 en 15 Abril 2016, 00:07 am
Una variable de tipo char no es una constante ._.


Título: Re: NEcesito ayuda con un encriptador
Publicado por: HardForo en 15 Abril 2016, 00:22 am
Obvio que no  ;D

Un char ('A') es una constante de tipo char que lo puedas asignar es otro cuento