elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11
71  Programación / Programación C/C++ / [Solucionado] Problema en un Ejercicio de C++ en: 30 Julio 2014, 23:23 pm
Hola gente, estoy haciendo un ejercicio en C++ y me encuentro con un problema, para que sea más entendible voy a dejar lo que dice dicho ejercicio..

Ejercicio:
Citar
(criptografía) Una compañía desea transmitir  datos a través del teléfono, pero le preocupa que sus teléfonos puedan estar intervenidos. Todos los datos se transmiten como enteros de cuatro dígitos. La compañía le ha pedido a usted que escriba un programa que cifre sus datos, de manera que éstos puedan transmitirse con más seguridad. Su programa debe leer un entero de acuatro dígitos introducido por el usuario y cifrarlo de la siguiente manera: reemplace cada dígito con (el resultado de sumar 7 al dígito) modulo 10. Luego intercambie el primer dígito con el tercero, e intercambie el segundo dígito con el cuarto. Después imprima un programa separado que reciba como entrada un entero de cuatro dígitos cifrado, y que lo descifre para formar el número original.

Ok, una vez ya sabido el ejercicio en el cifrador el código que hice fue el siguiente: (dejo lo más importante)

Código
  1. int digito1, digito2, digito3, digito4;
  2. int sobra;
  3.  
  4. digito1= numeroIngresado / 1000;
  5. sobra= numeroIngresado % 1000;
  6. digito2= sobra / 100;
  7. sobra= sobra % 100;
  8. digito3= sobra / 10;
  9. digito4= sobra %10;
  10.  
  11. digito1= ((digito1 + 7) % 10);
  12. digito2= ((digito2 + 7) % 10);
  13. digito3= ((digito3 + 7) % 10);
  14. digito4= ((digito4 +7 ) % 10);
  15.  
  16. cout <<"\nNumero Cifrado: " <<digito3 <<digito4 <<digito1 <<digito2;

Hasta aquí todo esta bién, por ejemplo ingresando el número 9456 me cifra el número y lo imprime: 2361

Bueno, ahora iría el código del programa que descifra y muestra el número original (nuevamente dejo lo más importante):

Código
  1. double digito1,digito2,digito3,digito4;
  2. int resto;
  3.  
  4. digito1= numeroCifrado / 1000;
  5. resto= numeroCifrado % 1000;
  6. digito2= resto / 100;
  7. resto= resto % 100;
  8. digito3= resto / 10;
  9. digito4= resto % 10;
  10.  
  11. digito1+=3;
  12. digito2+=3;
  13. digito3+=3;
  14. digito4+=3;
  15.  
  16. cout <<"Numero Descifrado: " <<digito3 <<digito4 <<digito1 <<digito2 <<endl;

Si ingreso el número cifrado (2361) me devuelve el número original...

Pero si en el cifrador hubiera puesto como número original 2361 el programa lo hubiera cifrado a: 3890

El descifrador me devuelve el número "original" como: 123611

Esto sucede a que al sumarle 3 en el descifrador se hace mayor a 9, yo lo hice así (osea sumandole 3) por la siguiente razón...

9 4 5 6

(9  + 7) % 10= 1.6
(4 + 7) % 10= 1.1
(5  + 7) % 10= 1.2
(6  + 7) % 10= 1.3

Entonces me di cuenta que para del resultado por ejemplo 1.6 había que sumarle 3 al resto osea 6 +3= 9 al igual que 1 +3 = 4, etc

Desde ya muchas gracias por cualquier ayuda :)
72  Programación / Programación C/C++ / Re: [Solucionado] Problema en codigo C++, no se ejecuta el else en: 30 Julio 2014, 07:01 am
Sinceramente estoy haciendo siempre en mis códigos clases por una manera de recordar las cosas, osea, en el capitulo donde estoy se separa la interfaz de la implementación y se hacen clases, es por esta razon que lo hago... con respecto a usar for no lo hago porque eso sigue en el capitulo que viene, muchas gracias por los consejos a todos saludos  ;D
73  Seguridad Informática / Hacking / Problema al subir shell en: 30 Julio 2014, 06:26 am
Hola gente, estoy haciendo uns experimientos con una pagina que hice, va solo subí los datos al servidor, le hice una inyeccion sql y pude acceder al panel de administrador, ahora desde ahí puedo subir una imagen...... bueno intento subir una shell como imagen lo unico que hace la pagina es subirla al servidor cambiandole el name sin cambiarle la extensión, puedo subir hasta un archivo .php, bueno alquerer subir la shell como imagen .jpg lo unico que logro es entrar en el "la imagen" pero me aparece el codigo php de la shell, osea que no me aparece su interfaz....

¿Alguna ayuda/consejo?
74  Programación / Programación C/C++ / Re: Problema en ciclo infinito en: 26 Julio 2014, 00:37 am
Gracias Blaster, ivancea96 y leosansan  ;-) solucionaron mi problema, aparte había puesto potencia*= potencia, cuando era potencia*=2

Saludos
75  Programación / Programación C/C++ / Re: Problema en codigo C++, no se ejecuta el else en: 25 Julio 2014, 23:41 pm
La condición del segundo while debe quedar así:

Código
  1. while (dibujaLinea < 9) // Aqui el <

Y el tercero así:

Código
  1. while (dibujaLinea < 9) // Aqui el 9

Saludos

Muchas gracias por la ayuda Blaster!  ;-)
76  Programación / Programación C/C++ / [Solucionado] Problema en ciclo infinito en: 25 Julio 2014, 23:29 pm
Hola gente, tengo que imprimir las potencias del entero 2, para eso uso un ciclo infinito: while (true) y siempre me imprime cero... sin embargo si le saco la intruccion potencia*=potencia me imprime 2, como tendría que ser.. quisiera saber porque ocurre esto, por las dudas dejo el código

Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. class Potencia
  6. {
  7. public:
  8. void imprimePotencia()
  9. {
  10. int potencia= 2;
  11. while(true)
  12. {
  13. cout <<potencia <<endl;
  14. potencia*= potencia;
  15. }
  16.  
  17. }
  18. };
  19.  
  20. int main()
  21. {
  22. Potencia Potencia1;
  23. Potencia1.imprimePotencia();
  24. return 0;
  25. }
77  Programación / Programación C/C++ / [Solucionado] Problema en codigo C++, no se ejecuta el else en: 25 Julio 2014, 23:09 pm
Hola gente, estoy teniendo un problema con un código, el tema es que tengo que dibujar
esto en el programa:

Código:
********
 ********
********
 ********
********
 ********
********
 ********

Y nosé por qué no se ejecuta el else  para la línea que tiene un espacio (osea la 2da, 4ta,6ta,8va)

Y quiero hacerlo con while

Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4. using std::cin;
  5.  
  6. class Tablero
  7. {
  8. public:
  9. void imprime()
  10. {
  11. linea=0;
  12. while (linea != 8) // itera 8 veces.
  13. {
  14. if (linea == 0 || linea ==2 || linea== 4 || linea ==6)
  15. {
  16. int dibujaLinea = 0;
  17. while (dibujaLinea > 9)
  18. {
  19. cout <<"*";
  20. ++dibujaLinea;
  21. }
  22.  
  23. }
  24. else
  25. {
  26. cout <<" ";
  27. int dibujaLinea= 0;
  28.  
  29. while (dibujaLinea < 8) // itera 7 veces
  30. {
  31. cout <<"*";
  32. ++dibujaLinea;
  33. }
  34.  
  35. }
  36. cout <<endl;
  37. ++linea;
  38.    }
  39. }
  40.  
  41. private:
  42. int linea;
  43. };
  44.  
  45.  
  46. int main()
  47. {
  48. Tablero Tablero1;
  49. Tablero1.imprime();
  50. cin.get();
  51. return 0;
  52. }

Desde ya agradezco cualquier ayuda   :)
78  Programación / Programación C/C++ / Re: Problema en codigo C++ en: 25 Julio 2014, 22:05 pm
Ahí lo he logrado hacer!  ;D

Muchas gracias eferion y Blaster por sus ayudas !  ;-)
79  Programación / Programación C/C++ / Re: Problema en codigo C++ en: 25 Julio 2014, 02:23 am
El número que recibes se encuentra en binario y tu has de convertirlo a su representación en base 10.

Para convertir un número de una base a otra tienes que ir procesando el número cifra a cifra. Por tanto, almacenar el número en binario no parece una buena idea (además un número en binario ocupa más que el equivalente en decimal: 100 = 8, por lo que almacenar el binario, en un entero como si fuese un decimal te va a limitar el rango de datos).

Lo suyo es que almacenes el número en una cadena de texto (clase string)... entonces recorres dicha cadena de principio a fin y para cada carácter de la cadena haces lo siguiente:

* Multiplicas el resultado parcial por 2
* Sumas la equivalencia decimal del caracter actual: ( '0' = 0, '1' = 1 )

Al finalizar el proceso tendrás la equivalencia decimal del número binario que has introducido.

PD.: El siguiente código

Código
  1. while ((numero / numeroDivisor) == 0)

Solo va a ser verdadero cuando numero < numeroDivisor, es decir, que salvo que metas un "binario" menor que 10 -> 2 en base decimal, el resultado del while va a ser falso... ese es el motivo por el que no te imprime nada.

Hola eferion, cambie el código de la función por este:

Código
  1. void Binario::confirmarNumero(int numero)
  2. {
  3. int numeroDivisor= 10;
  4. int escala = 1;
  5. int numeroSacado;
  6.  
  7. cout <<"El equivalente decimal  del numero binario 1101 es: ";
  8.  
  9. while ((numero / numero) != 0)
  10. {
  11. numeroSacado= numero % numeroDivisor;
  12. numero= numero / numeroDivisor;
  13. if (escala != 1)
  14. {
  15. cout <<numeroSacado <<"*" <<escala << " ";
  16. escala*= 2;
  17. }
  18. if (escala == 1)
  19. {
  20. cout <<numeroSacado <<"*" <<escala << " ";
  21. ++escala;
  22. }
  23.  
  24. }
  25. }

Pero no logo entender cual es el error ahora  :-\

PD: con respecto a lo que me dijiste sobre string no entendí muy bien a qué te refieres

80  Programación / Programación C/C++ / [Solucionado] Problema en codigo C++ en: 23 Julio 2014, 04:52 am
Hola gente estoy haciendo un ejercicio de un libro que tengo, y nose por qué el programa no me da resultados.....

Dejo el ejercicio así saben de que se trata y por si alguien le gustaría hacerlo (no estoy pidiendo que me hagan el ejercicio)

El ejercicio dice lo siguiente:
Citar
Escriba un programa que reciba como entrada un entero que contenga solo 0s y 1s (es decir, un entero "Binario"), y que imprima su equivalente decimal. Use los operadores módulo y división para elegir los dígitos del número "binario" una a la vez, de derecha a izquierda. En forma parecida al sistema numérico decimal, donde el dígito más a la derecha tiene un valor posicional de 1 y el siguiente dígito a la izquierda tiene un valor posicional de 10, después 100, después 1000, etcétera, en el sistema numérico binario, el dígito más a la derecha tiene un valor posicional 1, el siguiente dígito a la izquierda tiene un valor posicional de 2, luego 4, luego 8, etcétera. Así, el número decimal 234 se puede interpretar como 2*100 + 3*10 + 4*1. El equivalente decimal del número binario 1101 es 1*1 + 0*2 + 1*4 + 1*8.

Ok, el código que hice que no me imprime nada solo la pregunta del main es:

Main.cpp

Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4.  
  5. #include "Binario.h"
  6.  
  7. int main()
  8. {
  9. int numero;
  10. cout <<"Ingrese el numero binario para mostrar su equivalente decimal: ";
  11. cin >> numero;
  12. Binario Binario1(numero);
  13. cin.get();
  14. cin.get();
  15. return 0;
  16. }


Binario.h


Código
  1. class Binario
  2. {
  3. public:
  4. Binario(int);
  5. void confirmarNumero(int);
  6.  
  7. };


Binario.cpp
Código
  1. #include <iostream>
  2. using std::cout;
  3.  
  4. #include "Binario.h"
  5.  
  6.  
  7. Binario::Binario(int numero)
  8. {
  9. confirmarNumero(numero);
  10. }
  11.  
  12. void Binario::confirmarNumero(int numero)
  13. {
  14. int numeroDivisor = 10;
  15. int escala = 1;
  16. int numeroSacado;
  17.  
  18. while ((numero / numeroDivisor) == 0)
  19. {
  20.  
  21.  
  22.  
  23. numeroSacado= numero % numeroDivisor;
  24.  
  25. if (escala == 1)
  26. {
  27. cout <<numeroSacado <<"*1 " ;
  28. }
  29. else
  30. {
  31. cout <<numeroSacado <<"*" <<escala <<" ";
  32. }
  33.  
  34. numeroDivisor= numeroDivisor*10;
  35. }
  36. }
  37.  

PD: tengo que desarollar el tema de la variable escala pero eso no influye en el resultado del programa ejecutado
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines