Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Seyro97

#21
Bueno, pues nada. Gracias por tus respuestas :D
#23
Cita de: ivancea96 en  3 Octubre 2015, 09:36 AM
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 C/C++ / Re: Tabla de multiplicar
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 (cpp) [Seleccionar]
#include <stdio.h>

unsigned int CountDigits(unsigned int uNumber);

int main() {
printf("      1    2    3    4    5    6    7    8    9   10\n\n");

for(unsigned int uRow = 1u; uRow <= 10u; uRow++) {
if(CountDigits(uRow) == 1)
printf("\n %u", uRow);
else
printf("\n%u", uRow);

for(unsigned int uCol = 1u; uCol <= 10u; uCol++) {
if(uCol >= uRow) {
for(unsigned int i = 0; i < 5u - CountDigits(uCol*uRow); i++)
fputc(' ', stdout);

printf("%u", uRow*uCol);
} else {
printf("     ");
}
}
}

fgetc(stdin);
return 0;
}

unsigned int CountDigits(unsigned int uNumber) {
if(uNumber <= 9)
return 1;

if(uNumber <= 99)
return 2;

if(uNumber <= 999)
return 3;

printf("No se ha podido contar el numero de cifras");
return 0;
}
#25
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 (cpp) [Seleccionar]
float funcion(float x) {
       // Aquí se insertaría el código en código máquina
       
       return x;
}


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 (cpp) [Seleccionar]
int funcion(int x) {
_asm {
add x, 2
};

return x;
}


PD.: Quiero usar registros de 32 bits

Gracias
#26
Ya sé en que me equivoqué jaja.

Os dejo el resultado:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

typedef struct {
int **elements;
} Mat;

unsigned int IngresarMatriz(Mat *matriz);
void ImprimirMatriz(Mat *matriz, unsigned int orden);

int main() {
unsigned int orden = 0;
Mat matriz;

orden = IngresarMatriz(&matriz);

if(orden == 0)
return 1;

printf("%p", matriz);

ImprimirMatriz(&matriz, orden);

for(int i = 0; i < orden; i++)
free((void *)matriz[i]);

free((void *)matriz);

return 0;
}

unsigned int IngresarMatriz(Mat *matriz) {
unsigned int orden;
int *tempPointer;
int tempValue;

printf("Introduzca el orden de la matriz cuadrada: ");

if(scanf("%u", &orden) == EOF) {
printf("\nLa proxima vez introduzca un numero valido.");
return 0;
}

matriz->elements = (int **)malloc(orden * sizeof(int));

if(matriz->elements == (int **)0) {
printf("Error asignando memoria a la matriz (primer paso)");
return 0;
}

for(int i = 0; i < orden; i++) {
matriz->elements[i] = (int *)malloc(orden * sizeof(int));

if(matriz->elements[i] == (int *)0) {
printf("Error asignando memoria a la matriz (segundo paso)");
return 0;
}
}

for(unsigned int fila = 0; fila < orden; fila++) {
for(unsigned int columna = 0; columna < orden;) {
printf("\nIntroduzca el elemento fila %u columna %u: ", fila, columna);

if(scanf("%i", &tempValue) == EOF) {
printf("\nLa proxima vez introduzca un numero valido.");
} else {
tempPointer = matriz->elements[fila];
tempPointer[columna] = tempValue;

columna++;
}
}
}

return orden;
}

void ImprimirMatriz(Mat *matriz, unsigned int orden) {
for(unsigned int fila = 0; fila < orden; fila++) {
for(unsigned int columna = 0; columna < orden; columna++) {
printf("\nEl elemento cuya fila es %u y cuya columna es %u tiene el valor de %i", fila, columna, matriz->elements[fila][columna]);
}
}
}
#27
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 (cpp) [Seleccionar]
matriz = (int **)malloc(orden * sizeof(int));

if(matriz == (int **)0) {
printf("Error asignando memoria a la matriz (primer paso)");
return 0;
}

for(int i = 0; i < orden; i++) {
matriz[i] = (int *)malloc(orden * sizeof(int));

if(matriz[i] == (int *)0) {
printf("Error asignando memoria a la matriz (segundo paso)");
return 0;
}
}


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 (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
int tempValue;
int *tempPointer;

for(unsigned int fila = 0; fila < orden; fila++) {
for(unsigned int columna = 0; columna < orden;) {
printf("\nIntroduzca el elemento fila %u columna %u: ", fila, columna);

if(scanf("%i", &tempValue) == EOF) {
printf("\nLa proxima vez introduzca un numero valido.");
} else {
tempPointer = matriz[fila];
tempPointer[columna] = tempValue;

columna++;
}
}
}

Según el debugger, el programa crashea en
#28
Al menos lo intenté :P Aun así la gente podrá opinar en este hilo!
#29
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
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!