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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15
21  Programación / Programación C/C++ / Re: (Consula) ¿Se puede modificar una función en tiempo de ejecución? en: 4 Octubre 2015, 14:31 pm
Bueno, pues nada. Gracias por tus respuestas :D
22  Programación / Programación C/C++ / Re: Números reales de un archivo .txt en C en: 4 Octubre 2015, 12:57 pm
La función fscanf te permite leer números reales:

http://www.tutorialspoint.com/c_standard_library/c_function_fscanf.htm
23  Programación / Programación C/C++ / Re: (Consula) ¿Se puede modificar una función en tiempo de ejecución? en: 4 Octubre 2015, 12:54 pm
Te propongo otras opciones primero:
-Utilizar un lenguaje como python para realizar la ecuacion en tiempo de ejecucion
-Interpretar la ecuacion con C++

C++ es un lenguaje compilado. Puedes meter en una variable el binario de una función y llamarla como si de una funcion se tratase. Pero eso ya es muy complicado.

Me interesa lo complicado (bueno, quizás no, pero quiero ver cómo se hace!!). ¿Cómo podría llamar a la función guardada en una variable (Supongo que de tipo double *)?
24  Programación / Programación C/C++ / Re: Tabla de multiplicar en: 4 Octubre 2015, 12:45 pm
Te voy a presentar el código porque no sabría explicarlo bien. Ahora bien, te pido ENCARECIDAMENTE que entiendas el código, para así tener mi conciencia tranquila :P. Si no se entiende algo, pregunta!!

Código
  1. #include <stdio.h>
  2.  
  3. unsigned int CountDigits(unsigned int uNumber);
  4.  
  5. int main() {
  6. printf("      1    2    3    4    5    6    7    8    9   10\n\n");
  7.  
  8. for(unsigned int uRow = 1u; uRow <= 10u; uRow++) {
  9. if(CountDigits(uRow) == 1)
  10. printf("\n %u", uRow);
  11. else
  12. printf("\n%u", uRow);
  13.  
  14. for(unsigned int uCol = 1u; uCol <= 10u; uCol++) {
  15. if(uCol >= uRow) {
  16. for(unsigned int i = 0; i < 5u - CountDigits(uCol*uRow); i++)
  17. fputc(' ', stdout);
  18.  
  19. printf("%u", uRow*uCol);
  20. } else {
  21. printf("     ");
  22. }
  23. }
  24. }
  25.  
  26. fgetc(stdin);
  27. return 0;
  28. }
  29.  
  30. unsigned int CountDigits(unsigned int uNumber) {
  31. if(uNumber <= 9)
  32. return 1;
  33.  
  34. if(uNumber <= 99)
  35. return 2;
  36.  
  37. if(uNumber <= 999)
  38. return 3;
  39.  
  40. printf("No se ha podido contar el numero de cifras");
  41. return 0;
  42. }
25  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
26  Programación / Programación C/C++ / Re: (Ayuda) Programa crashea al acceder al último término de una matriz en: 2 Octubre 2015, 08:11 am
Ya sé en que me equivoqué jaja.

Os dejo el resultado:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct {
  5. int **elements;
  6. } Mat;
  7.  
  8. unsigned int IngresarMatriz(Mat *matriz);
  9. void ImprimirMatriz(Mat *matriz, unsigned int orden);
  10.  
  11. int main() {
  12. unsigned int orden = 0;
  13. Mat matriz;
  14.  
  15. orden = IngresarMatriz(&matriz);
  16.  
  17. if(orden == 0)
  18. return 1;
  19.  
  20. printf("%p", matriz);
  21.  
  22. ImprimirMatriz(&matriz, orden);
  23.  
  24. for(int i = 0; i < orden; i++)
  25. free((void *)matriz[i]);
  26.  
  27. free((void *)matriz);
  28.  
  29. return 0;
  30. }
  31.  
  32. unsigned int IngresarMatriz(Mat *matriz) {
  33. unsigned int orden;
  34. int *tempPointer;
  35. int tempValue;
  36.  
  37. printf("Introduzca el orden de la matriz cuadrada: ");
  38.  
  39. if(scanf("%u", &orden) == EOF) {
  40. printf("\nLa proxima vez introduzca un numero valido.");
  41. return 0;
  42. }
  43.  
  44. matriz->elements = (int **)malloc(orden * sizeof(int));
  45.  
  46. if(matriz->elements == (int **)0) {
  47. printf("Error asignando memoria a la matriz (primer paso)");
  48. return 0;
  49. }
  50.  
  51. for(int i = 0; i < orden; i++) {
  52. matriz->elements[i] = (int *)malloc(orden * sizeof(int));
  53.  
  54. if(matriz->elements[i] == (int *)0) {
  55. printf("Error asignando memoria a la matriz (segundo paso)");
  56. return 0;
  57. }
  58. }
  59.  
  60. for(unsigned int fila = 0; fila < orden; fila++) {
  61. for(unsigned int columna = 0; columna < orden;) {
  62. printf("\nIntroduzca el elemento fila %u columna %u: ", fila, columna);
  63.  
  64. if(scanf("%i", &tempValue) == EOF) {
  65. printf("\nLa proxima vez introduzca un numero valido.");
  66. } else {
  67. tempPointer = matriz->elements[fila];
  68. tempPointer[columna] = tempValue;
  69.  
  70. columna++;
  71. }
  72. }
  73. }
  74.  
  75. return orden;
  76. }
  77.  
  78. void ImprimirMatriz(Mat *matriz, unsigned int orden) {
  79. for(unsigned int fila = 0; fila < orden; fila++) {
  80. for(unsigned int columna = 0; columna < orden; columna++) {
  81. printf("\nEl elemento cuya fila es %u y cuya columna es %u tiene el valor de %i", fila, columna, matriz->elements[fila][columna]);
  82. }
  83. }
  84. }
27  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
28  Foros Generales / Sugerencias y dudas sobre el Foro / Re: (Sugerencia) Añadir un nuevo foro en el apartado de Foros Generales en: 22 Agosto 2015, 00:25 am
Al menos lo intenté :P Aun así la gente podrá opinar en este hilo!
29  Foros Generales / Sugerencias y dudas sobre el Foro / Re: (Sugerencia) Añadir un nuevo foro en el apartado de Foros Generales en: 21 Agosto 2015, 23:43 pm
En mi mas sincera opinión, no hay demasiadas preguntas de esas porque no hay un subforo dedicado ello. Claro, eso es opinión mia
30  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!
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