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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1  Programación / Programación C/C++ / Re: Encriptacion en C en: 25 Octubre 2015, 21:26 pm
Lo siento... Estoy acostumbrado a C++ y se me había olvidado
2  Programación / Programación C/C++ / Re: Encriptacion en C en: 25 Octubre 2015, 21:02 pm
Citar
por ultimo como hacer que si inserto una Z por ejemplo, y pido que se recorra una vez, me muestre la A, en lugar del siguiente carácter ASCII que seria el corchete

En caso de hacer esto, estarías perdiendo información, por lo que no podrías decodificarlo... Por cierto, para ayudarte, primero inténtalo.

Respecto a que solo lee palabras, eso es por culpa de scanf. Tienes que usar la función gets para obtener la cadena completa...
3  Programación / Programación C/C++ / Re: (Consulta) Preferencia entre operadores en: 25 Octubre 2015, 20:10 pm
Claro, tiene todo el sentido xD. Gracias por sus respuestas :D
4  Programación / Programación C/C++ / Re: (Consulta) Preferencia entre operadores en: 25 Octubre 2015, 02:03 am
Ahh vale. Gracias!
5  Programación / Programación C/C++ / Re: |Lo que no hay que hacer en C/C++. Nivel basico| en: 24 Octubre 2015, 08:48 am
explicate las razones

Casi nunca miro este tema xDD. Siento no haber respondido antes. Las razones son una tontería, pero ya que C++ nos provee una estructura lógica, pues vamos a usarla... Vamos, eso pienso yo. Otra razón, aunque casi ni es razón, imaginemos que una librería que no conoce cout (? jaja), y usa cout para crear una clase, pues entonces habría un conflicto xD
6  Programación / Programación C/C++ / (Consulta) Preferencia entre operadores en: 24 Octubre 2015, 08:39 am
Hola, muy buenas. Con el fin de investigar un poco sobre la preferencia entre operadores, hice el siguiente programa:

Código
  1. #include <iostream>
  2.  
  3. int Mostrar(const char *lpszMensaje);
  4.  
  5. int main() {
  6.    //(*(int *)(&(std::cout << "Izquierda->"))) + (*(int *)(&(std::cout << "Centro->"))) * (*(int *)(&(std::cout << "Derecha->")));
  7.    Mostrar("Izquierda->") + Mostrar("Centro->") * Mostrar("Derecha->");
  8.  
  9.    std::cin.get();
  10.    return 0;
  11. }
  12.  
  13. inline int Mostrar(const char *lpszMensaje) {
  14.    std::cout << lpszMensaje;
  15.  
  16.    return 0;
  17. }

Lo que yo me esperaba es que se ejecutara Mostrar("Centro->") * Mostrar("Derecha->"), y después Mostrar("Izquierda->") más el resultado anterior, ya que el operador * tiene preferencia sobre el +, pero la salida del programa ha sido la siguiente:

Código:
Izquierda->Centro->Derecha->

Es decir, que ¿en teoría se habría ejecutado primero la suma, y después el producto? No lo entiendo... Si alguien me lo pudiera explicar... Gracias!

PD.: En el compilador he puesto que no optimice el código. Comando usado:

Código:
g++ -o main.exe main.cpp
Trabajando con MinGW-w64 desde Windows
7  Programación / Programación C/C++ / Re: problema con asignar un float en: 24 Octubre 2015, 03:27 am
El proceso de convertir un entero en float se llama casting. Sería así:

Código
  1. resultado = (float)dividendo / (float)divisor;
8  Programación / Programación C/C++ / Re: numero odioso NUEVO! en: 22 Octubre 2015, 23:34 pm
Antes de pasar al problema principal, te voy a dar unos cuantos consejos.

0º Usa etiquetas GeSHI!! Hará el código más vistoso y entendible y así recibirás antes la ayuda

1º No uses variables globales. Aunque estés haciendo un ejercicio, el uso de variables globales casi nunca está recomendado. En lugar de eso, podrías simplemente retornar el número:

Código
  1. int pedirInfo() {
  2.        int k = 0;
  3.  
  4. do {
  5. printf("\n\n-Ingrese un numero entero positivo cualquiera: "); scanf("%d", &k);
  6. if(k <= 0)//validacion del dato de entrada
  7. {
  8. printf("\a\n\t\t\tERROR: Ingrese un <numero entero positivo>\n");
  9. }
  10. } while(k <= 0);
  11.  
  12.        return k;
  13. }

2º Una variable de tipo 'int' ocupa 32 bits, es decir, 32 ceros o unos. Entonces, ¿por qué la cadena ocupa 1000 bytes? Mejor que solamente ocupe 33 bytes para así optimizar (el último carácter es nulo).

Código
  1. char cadena[33];

3º Teniendo en cuenta el paso anterior y que la cadena empieza por el cero, el ciclo for de la línea 32 se debería ver así:

Código
  1. for(i = 0; i < 32; i++)

4º Hay un error en la línea 34. A la hora de comparar los elementos de la cadena, comparas lo que es la cadena en sí, no los elementos:

Código
  1. if(cadena[i] == '1')

5º Lo que has pretendido hacer es contar la cantidad de 'números odiosos' que has introducido por el teclado, pero si reinicias esta cantidad en cada ciclo, entonces el contar no vale de nada jaja:

Código
  1. int i, cantidad_de_1 = 0, cantidad_de_odiosos = 0;

Las has declarado dentro del ciclo. Solución, poner esta sentencia antes de comenzar el ciclo

6º Después de cada ciclo, yo limpiaría el el buffer stdin. Para ello, al final del ciclo añade
Código
  1. fflush(stdin);
Además, tienes que reiniciar el número de unos en cada ciclo:
Código
  1. cantidad_de_1 = 0;

Después de haber dicho todo esto (espero de no haberme olvidado nada...) ESTO NO ES LO QUE PEDÍA EL EJERCICIO XDD. Lo que pedía el ejercicio es que comprobaras cuántos números odiosos había entre 1 y el número introducido...

PD. Extra: Hay una manera mucho más óptima de realizar este ejercicio. Te dejaré como pista que el ordenador de por sí guarda los datos en binario, no hace falta convertirlos... Puedes usar los operadores &, >> y todos los demás operadores binarios...

ESPERO HABERTE SIDO DE AYUDA!!
9  Programación / Programación C/C++ / (Consulta) La función para pausar el thread principal en C++11 Standard no vale en: 21 Octubre 2015, 01:25 am
Hola a tod@s. La cosa es que estaba experimentando con las librerías Standard 'chrono.h' y 'thread.h' de C++11, usando el compilador de VC2015 de 64 bits. El problema es que al decirle que espere un milisegundo con la función 'std::this_thread::sleep_for(std::chrono::milliseconds(1))', el programa dice que espera entre catorce y quince milisegundos.

Código
  1. #include <iostream>
  2. #include <thread>
  3. #include <chrono>
  4. #include <windows.h>
  5.  
  6. int main() {
  7. std::chrono::high_resolution_clock::time_point cStartTime, cEndTime;
  8. long long lTimeElapsed;
  9.  
  10. while(true) {
  11. cStartTime = std::chrono::high_resolution_clock::now();
  12. //std::this_thread::sleep_for(std::chrono::milliseconds(1));
  13. Sleep(1);
  14. cEndTime = std::chrono::high_resolution_clock::now();
  15.  
  16. lTimeElapsed = std::chrono::duration_cast<std::chrono::milliseconds>(cEndTime - cStartTime).count();
  17.  
  18. std::cout << "Time elapsed: " << lTimeElapsed <<  "ms" << std::endl;
  19. }
  20.  
  21. std::cout << "\nEl programa ha terminado";
  22.  
  23. std::cin.get();
  24. return 0;
  25. }

Nota: La función Sleep y 'std::this_thread::sleep_for(std::chrono::milliseconds(1));' dan los mismos resultados

Aquí una captura de la salida:
10  Programación / Programación C/C++ / Re: Problemas con printf(); en: 19 Octubre 2015, 05:53 am
Tendrías que poner en vez de 'char palabra[100]="";', 'static char palabra[100]="";'
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines