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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 125
111  Programación / Programación C/C++ / Re: Función esfechavalida que valide de forma separada en: 2 Febrero 2015, 16:04 pm
También puedes devolver simplemente un int que, dependiendo de su valor, indique si la fecha es correcta o, de producirse un error, dónde se encuentra.

Por ejemplo:

0 -> Fecha correcta
1 -> Año no válido
2 -> Mes no válido
3 -> Día no válido

Puedes asignar los valores que te de la gana, hay gente que prefiere poner valores negativos a los errores.

Un saludo
112  Programación / Programación C/C++ / Re: Duda con extern "C" en: 2 Febrero 2015, 12:20 pm
C++ soporta la sobrecarga de funciones, mientras que C no. Para poder admitir esta sobrecarga, C++ dispone de un mecanismo de nombrado de funciones diferente al utilizado por C. Ambos mecanismos son incompatibles.

"extern C" obliga al compilador de C++ a generar nombres a la usanza de C, lo que te permite linkar ese código objeto con un compilador de C.

Si siempre vas a generar el código usando un compilador C++ y no vas a reutilizar código precompilado en C++ para generar librerías y/o aplicaciones con un compilador de C puedes ahorrarte el uso de "extern C".

Un saludo.
113  Programación / Programación C/C++ / Re: Interpretador de brainfuck. en: 2 Febrero 2015, 08:15 am
Este código tiene bastante lógica de punteros y no es algo obvio de seguir con la mirada... deberías preparar una versión que pudiesemos compilar cada uno en casa sin dependencias. Dado que tu problema no tiene nada que ver con el SDK, deberías ser capaz de eliminar todo ese código hasta lograr una versión mínima que únicamente incorpore la lógica del "brainfuck"
114  Programación / Programación C/C++ / Re: Problema al compilar en: 27 Enero 2015, 16:42 pm
lo que me sucede; es que quiero agregarle una función más al proyecto por lo que tengo la necesidad de compilarlo de nuevo.

Es lo que tiene añadir funciones nuevas a un programa, el módulo afectado así como sus dependencias tienen que recompilarse.

También me serviría algún tutorial donde yo pueda crear al compilar un fichero .x32 ya sea en C++ o VB.

Esto no lo he entendido. No acabo de entender que tiene que ver el que te falte la libreria XArray.dll en tu proyecto con generar un fichero .x32 al compilar.

Un saludo
115  Programación / Programación C/C++ / Re: Problema al compilar en: 27 Enero 2015, 09:14 am
Deberías revisar la web de adobe y descargarte los binarios necesarios para que el ejemplo funcione. Esa librería no forma parte del estándar, es específica de lo que estás intentando compilar.
116  Programación / Programación C/C++ / Re: strtok en: 27 Enero 2015, 09:08 am
Código
  1. char palabra[50];
  2. palabra = strtok(cadena,",");

A ver, strtok te devuelve un puntero a una posición de "cadena"... el problema es que "palabra", pese a ser un puntero, no es de un tipo compatible con la función. "palabra" es un puntero que va a apuntar a una estructura fija de 50 caracteres... no puedes cambiar la posición a la que apunta dicho puntero.

Lo que tienes que hacer es declarar un puntero a char... a secas:

Código
  1. char *palabra;
  2. palabra = strtok(cadena, ",");

Por otro lado:

Código
  1. char **palabras = NULL;
  2. while( palabra!=NULL )
  3. {
  4.  palabras[i] = strdup(palabra);
  5. }

Ahí tienes un problema, ya que "palabras" no apunta a una dirección de memoria válida, luego todos los accesos que hagas a esta variable te van a dar problemas. En este caso podrías plantearte hacer una reserva de memoria con malloc para poder almacenar los punteros.

Un saludo
117  Programación / Programación C/C++ / Re: Programa que genera números aleatorios sin repetir en C++ en: 26 Enero 2015, 17:20 pm
La eficiencia es un término que suele ser complicado de acotar. Te pongo algunas notas genéricas:

* La eficiencia se mide únicamente por tiempo, por consumo de memoria o por un equilibrio entre ambos?

* Depende del número de elementos a manejar. El algoritmo más eficiente para una población pequeña suele ser diferente del más eficiente para una población grande.

* Depende de los requisitos de la aplicación

* Depende de la arquitectura de la máquina sobre la que funciona el algoritmo.

A modo de ejemplo, para rellenar un vector de 10 elementos no vas a notar ninguna diferencia entre usar un algoritmo super optimizado y el que tienes ya hecho... si en vez de 10 elementos quieres conseguir, no se, 5.000 millones de números pues ya la cosa cambia ( nota que ya no te valdría el tipo int ).

No se, si tu idea es conseguir una colección de 10 números únicos partiendo de un grupo inicial de 15 números podrías probar a crear primero un array con los 15 números y a sacar 10 números al azar... o también puedes desordenar esa colección de 15 números y quedarte únicamente con los 10 primeros:

Código
  1. const int PopulationSize = 20;
  2. const int ArraySize = 19;
  3.  
  4. int main(){
  5.  
  6.  int population[ PopulationSize ];
  7.  for ( int i=0; i < PopulationSize; i++ )
  8.    population[ i ] = i+1;
  9.  
  10.   int arreglo[ ArraySize ];
  11.  
  12.   srand(time(0));
  13.  
  14.   for(int i = 0; i < PopulationSize; i++)
  15.   {
  16.     int j = rand() % PopulationSize;
  17.  
  18.     if ( i == j )
  19.       j = ( i + 1 ) % PopulationSize;
  20.  
  21.     std::swap( population[i], population[j]);
  22.   }
  23.  
  24.   for ( int i = 0; i < ArraySize; ++i )
  25.   {
  26.     arreglo[ i ] = population[ i ];
  27.     std::cout << arreglo[ i ] << std::endl;
  28.   }
  29.  
  30.   return 0;
  31. }
118  Programación / Programación C/C++ / Re: problema al final con un codigo en c++ en: 26 Enero 2015, 08:35 am
Así a bote pronto veo un par de errores:

1. Si d = b * b - 4 * a *c es menor que 0, la siguiente instrucción, e = sqrt(d) va a dar error. La raiz de cualquier número negativo da lugar a números complejos y esta función no está preparada para este tipo de cálculos.

2. Si a = 0, el divisor en  (-b + e) / (2 * a) será igualmente 0 y eso resulta en un error en tiempo de ejecución.
119  Programación / Programación C/C++ / Re: Consulta ficheros en: 19 Diciembre 2014, 12:36 pm
divide y vencerás. Sabes separar por el primer grupo "---". Presupongo que al "separar", lo elementos que hacen las veces de "separador" se eliminan entonces:

* Coges cada subgrupo y separas por "(". Tras esto te quedan tres subgrupos nuevos: uno vacío y dos con el contenido"coordx,coordy)" y "coordx,coordy)".

* Omites el primer subgrupo, y para los dos restantes, eliminas el último carácter de cada uno.

* Ahora separas cada uno de estos últimos subgrupos por "," y ya tienes "coordx" y "coordy" correctamente separadas.

Es una forma de actuar. Otra forma puede ser:

* Recorres la cadena aplicando las siguientes reglas:

1. Si te encuentras "(", entonces es que lo siguiente que viene es la coordenada x
2. Si encuentras ",", has terminado de leer la coordenada x y lo siguiente es la coordenada y
3. Si encuentras ")", has terminado de leer la coordenada y. Si es la primera vez que encuentras este carácter vuelves a repetir el proceso para leer las siguientes coordenadas.
120  Programación / Programación C/C++ / Re: Problema con matriz char en: 14 Diciembre 2014, 16:27 pm
Código
  1. void aleatorio (int HEIGHT, int WIDTH,const char* puzzle[HEIGHT][WIDTH])

Esa cabecera está mal. El valor de WIDTH en puzzle[HEIGHT][WIDTH] debe poder conocerse en tiempo de compilación, que no de ejecución, para que el código pueda crear el juego de instrucciones adecuado.

Código
  1. string random;
  2. // ...
  3. puzzle[i][j] = random.c_str();

Esto también está mal... ahí estás copiando en puzzle[j] el punter interno del string... una vez sales de ese bucle y "random" deja de existir, esa posición de memoria deja de ser válida. Ahí tendrías que copiar el string.

Código
  1. char wordToMatrix(int HEIGHT, int WIDTH) {
  2. char puzzle[HEIGHT][WIDTH];

Te digo lo mismo que en el primer punto, lo correcto es que, en este caso, tanto HEIGHT como WIDTH sean conocidas en tiempo de compilación, si ambas variables han de ser dinámicas lo lógico es que reserves memoria con "new".

Y bueno, no entro en más detalle porque no tengo ni compilador ni depurador a mano.

A ver si alguien más se anima.

Un saludo.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 125
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines