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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Temas
Páginas: [1] 2 3 4 5
1  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
2  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:
3  Programación / Programación General / (Consulta) Convertir caracteres en UTF-8 a la página de código 437 con Notepad++ en: 16 Octubre 2015, 20:28 pm
Hola, quiero convertir caracteres codificados en UNICODE (8 Bits) a la codificación que usa la consola de Windows (descritos en la página de código 437, pincha aquí para verla) usando el programa Notepad++. Gracias
4  Programación / Programación C/C++ / (Consulta) Empaquetar las DLL estándar de MinGW en el ejecutable. en: 16 Octubre 2015, 19:05 pm
Hola a tod@s. La pregunta es la siguiente: ¿cómo podría empaquetar todas las DLLs incluidas en el directorio (por defecto) "C:\MinGW\bin" usando el comando g++? Para así no tener que andar poniendo las DLLs en la carpeta del programa cuando vaya a otro ordenador sin MinGW. Gracias
5  Programación / ASM / (Consulta) Ensamblar código ASM (generado por g++ -S) usando g++ en: 7 Octubre 2015, 10:45 am
Hola a tod@s. Para investigar un poco la relación entre C++ y ASM he estado obteniendo códigos ASM usando el comando "g++ -S -Wall -o main.s main.cpp". La pregunta es: ¿cómo puedo pasar ese código en ensamblador a un ejecutable (la función main está en el código)?
6  Programación / Programación C/C++ / (Consula) ¿Se puede modificar una función en tiempo de ejecución? en: 3 Octubre 2015, 08:35 am
Hola. La pregunta viene del siguiente problema que me he planteado: quiero hacer un representador de funciones. El usuario ha de introducir una función cualquiera [ f(x)  = ...].

La idea que he tenido es convertir el string en código máquina (siguiendo una sintaxis xD)

La función en primera instancia se vería así:

Código
  1. float funcion(float x) {
  2.        // Aquí se insertaría el código en código máquina
  3.  
  4.        return x;
  5. }

Después de que el usuario haya introducido la función f(x) = x + 2, la función (en C++, Visual Studio)  se vería así:

Código
  1. int funcion(int x) {
  2. _asm {
  3. add x, 2
  4. };
  5.  
  6. return x;
  7. }

PD.: Quiero usar registros de 32 bits

Gracias
7  Programación / Programación C/C++ / (Ayuda) Programa crashea al acceder al último término de una matriz en: 2 Octubre 2015, 07:41 am
Hola a tod@s. El problema que tengo es que al acceder al último término de una matriz generada con 'malloc', el programa deja de funcionar.

Código
  1. matriz = (int **)malloc(orden * sizeof(int));
  2.  
  3. if(matriz == (int **)0) {
  4. printf("Error asignando memoria a la matriz (primer paso)");
  5. return 0;
  6. }
  7.  
  8. for(int i = 0; i < orden; i++) {
  9. matriz[i] = (int *)malloc(orden * sizeof(int));
  10.  
  11. if(matriz[i] == (int *)0) {
  12. printf("Error asignando memoria a la matriz (segundo paso)");
  13. return 0;
  14. }
  15. }

La variable 'matriz' es de tipo 'int **'. Cuando intento cambiar el valor de 'matriz[orden - 1][orden - 1], el programa se cierra inesperadamente (Windows). Estoy compilando con MinGW usando el siguiente comando:
Código
  1. gcc -Wall -std=c99 -o main.exe main.c

No me salta ningún 'Warning'.

La parte donde cambio los datos de la matriz es:

Código
  1. int tempValue;
  2. int *tempPointer;
  3.  
  4. for(unsigned int fila = 0; fila < orden; fila++) {
  5. for(unsigned int columna = 0; columna < orden;) {
  6. printf("\nIntroduzca el elemento fila %u columna %u: ", fila, columna);
  7.  
  8. if(scanf("%i", &tempValue) == EOF) {
  9. printf("\nLa proxima vez introduzca un numero valido.");
  10. } else {
  11. tempPointer = matriz[fila];
  12. tempPointer[columna] = tempValue;
  13.  
  14. columna++;
  15. }
  16. }
  17. }
  18.  
  19. Según el debugger, el programa crashea en
8  Foros Generales / Sugerencias y dudas sobre el Foro / (Sugerencia) Añadir un nuevo foro en el apartado de Foros Generales en: 21 Agosto 2015, 14:05 pm
Hola foro.elhacker.net!.

Tengo una sugerencia que seguro que a mas de uno le interesa: La idea es añadir un nuevo subforo a Foros Generales dedicado a las matemáticas (dudas de mates, álgebra y demás). Esto lo veo útil porque tanto en programación (ya sea de videojuegos, o emuladores de físicas) como en Seguridad Informática (codificación, sucesiones, algoritmos...) puede llegar a ser útil.

¡Muchas gracias por leerme!
9  Programación / Programación General / (Ayuda) Notepad++ guarda los archivos en codificación UNICODE en: 16 Agosto 2015, 21:21 pm
Hola, muy buenas a tod@s. Resulta que estaba intentando crear un documento con codificación ASCII extendido (seleccionando la opción ANSI), pero se guarda en UNICODE. Prueba de ello es que al guardar un documento con el carácter á este se guarda en hexadecimal como 0xE1 (225 en decimal), por lo que corresponde a la codificación en UNICODE (Creo que UTF-8). Entonces la pregunta es: ¿Cómo puedo guardar un documento con Notepad++ codificado en ASCII extendido? Gracias
10  Programación / ASM / (Consulta) Acceder a la memoria de vídeo en: 15 Agosto 2015, 08:53 am
Hola, muy buenas a tod@s. La pregunta me parece que es simple de comprender: ¿Se puede acceder a la parte de la memoria de vídeo la cual almacena el mapa de bits de la pantalla? Me explico: quiero acceder a la parte de la memoria que contiene el estado de los píxeles de la pantalla. Gracias
Páginas: [1] 2 3 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines