NEcesito ayuda con un encriptador

Iniciado por Miguel97, 8 Abril 2016, 02:24 AM

0 Miembros y 1 Visitante están viendo este tema.

Miguel97

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?

engel lex

los char no son solo letras, son unas variables de 8bit, es decir se pueden interpretar como numeros... puedes hacer

Código (cpp) [Seleccionar]
int letra = 'a';
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 (cpp) [Seleccionar]
int letra = char_otro-'a';
cout<< letra << endl;

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Gunhack

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 (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main() {

    int letra = 'a' - 97;
    cout << letra << " " << endl;

    for(int i = 0; i < 25; i++) {

        cout << ('a' + i) - 97 << " ";
    }

    cout << endl;

    for(int i = 0; i < 26; i++) {

        cout << (char)('a' + i) << " ";
    }
}

MAFUS

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'.

m0rf

Cita de: 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 (cpp) [Seleccionar]
int letra = 'a';
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 (cpp) [Seleccionar]
int letra = char_otro-'a';
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.
Si todos fuéramos igual de inteligentes no existiría la mediocridad porque no podríamos apreciarla. Aprecias la mediocridad?

ivancea96

#5
Cita de: m0rf en 11 Abril 2016, 18:00 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.

Gunhack

Cita de: 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'.

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

m0rf

Cita de: ivancea96 en 11 Abril 2016, 18:57 PM
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

Saludos.
Si todos fuéramos igual de inteligentes no existiría la mediocridad porque no podríamos apreciarla. Aprecias la mediocridad?

ivancea96

Cita de: m0rf en 12 Abril 2016, 03:50 AM
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.

m0rf

Cita de: ivancea96 en 12 Abril 2016, 09:39 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.
Si todos fuéramos igual de inteligentes no existiría la mediocridad porque no podríamos apreciarla. Aprecias la mediocridad?