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
11  Programación / Programación C/C++ / Re: Problema con funcion exp en C, cn Borland 5.02 en: 27 Agosto 2012, 03:06 am
La probaste al menos? Es C básico!

Y no sería más fácil multiplicar por sí misma la variable y obtener así el cuadrado?

Pienzo lo mismo, para que quieres math.h si solo tienes que dividir y multiplicar dos números!

Te lo explico por partes:

Código
  1. // Si el resultado es cero abortamos la división
  2. if(z == 0) // pero lo escribo asi if(!z)
  3. return 0;
  4. x = x/z; // pero lo escribo así x /= 2
  5. x = x*x; // pero lo escribo asi x *= x
quedaría así

Código
  1. if(!z)
  2. return 0;
  3. x /= z;
  4. x *= x;
  5. return x;

Ahora el operador ternario

Código
  1.    a = (condicion)? (resultado_si): (resultado_no);
   
Si la condicion es verdadera, se asigna resultado_si, si es falsa se asigna resultado_no. Los paréntesis no son necesarios. Pero en nuestro caso tenemos dos operaciones para la ultima sentencia, así que la separamos con la coma

Código
  1. // si z vale 0 retornamos cero, en otro caso realizamos las dos operaciones...
  2. // la expresión con comas tendra el valor de la última
  3.  
  4. resultado = (z == 0)? (0): (x /= z, x * x );
   return resultado;
   
Sintetizando nos queda así

Código
  1.    return !z? 0: (x /=z, x*x);
12  Programación / Programación C/C++ / Re: Base de Datos con MySQL desde C !Excelente! en: 27 Agosto 2012, 01:49 am
Para utilizar una librería, no debes incluir todos los archivos de cabecera de las funciones que esta requiere internamente. No estas incluyendo windows.h para abrir sockets porque no los estas utilizando, no porque haya leído todo tu código fuente, sino porque asumo que lo has compilado antes de subir, el código compila correctamente, sino no lo subirías. Lo compilaste en Windows, por eso el include <windows.h>. Si estuvieras utilizando sockets en Windows deberías haber incluido el archivo de cabeceras para trabajar con ellos: winsock.h.

Probablemente sin “windows.h” no puedas compilar, pero lo aconsejable para compilar un cliente MySQL en Windows es que incluyas my_global.h, no windows.h directamente. http://dev.mysql.com/doc/refman/5.0/es/windows-client-compiling.html
13  Programación / Programación C/C++ / Re: programar en gedit en ubuntu [video tutorial] en: 27 Agosto 2012, 00:10 am
Pero que acaso g++ no es un compilador?

Exactamente a eso me referia!

generalmente programo con un compilador IDE llamado geany....

Geany es SOLO un IDE amigo, un buen IDE, valga la redundancia. De la página del autor http://www.geany.org: Geany is a text editor ... provide a small and fast IDE. No es un compilador.

Se me ocurrió que talvez no utilizabas compilador… luego de escribir tu código fuente lo transcribías al ensamblador y calculabas la posición de memoria de cada instrucción para determinar el destino de las instrucciones de salto, luego buscabas en la hoja de datos de tu micro el código de operación de cada nemónico y como se forman las instrucciones con parámetros, finalmente lo llevarías a un archivo binario con un editor haxadecimal. Si necesitabas enlace estático lo ponías al final y modificabas nuevamente los saltos. A enlaces dinámicos así como librerías grandes y recursos los esquivarías por conveniencia.
14  Programación / Programación C/C++ / Re: Descompilador para Borland C++ en: 26 Agosto 2012, 23:44 pm
El desensamblador del paquete NASM es muy bueno.

Buscas un desensamblador que regenere los fuentes en C? Si lo encuentras compártelo por favor!

Con NDASM obtendrás el código ASM del ejecutable, sin importar el lenguaje o compilador que haya utilizado su autor. Como sabrás, examinar este tipo de código es tedioso y lleva mucho tiempo, pero puedes auxiliarte con un editor hexadecimal (para intercalar paradas por ejemplo, si no posee crc) o herramientas que te permitan modificar los recursos de la aplicación (íconos, textos, etc.), así podrás correr el programa paso a paso mientras lo estudias.
15  Programación / Programación C/C++ / Re: Principios básicos de desarrollo de drivers en Windows - Lenguaje C en: 26 Agosto 2012, 23:32 pm
Muy buen aporte, como mencionas en español es escasa la información al respecto!
16  Programación / Programación C/C++ / Re: Problema con funcion exp en C, cn Borland 5.02 en: 26 Agosto 2012, 23:27 pm
Podrías hacerlo de este modo:

Código
  1. #include<stdio.h>
  2.  
  3. /* f(x,z) = (x/z)^2 */
  4. float f(float x, float z)
  5. {
  6. return !z? 0: (x /=z, x*x);
  7. }
  8.  
  9. int main()
  10. {
  11. printf("%f\n", f(20,4)); // salida: 25.00
  12. printf("%f\n", f(24,2)); // salida: 144.00
  13. return 0;
  14. }
17  Programación / Programación C/C++ / Re: Base de Datos con MySQL desde C !Excelente! en: 26 Agosto 2012, 23:16 pm
Muy buen aporte!

Solo realizar esta aclaración: Dev-c++ no es un compilador, es un IDE, probablemente estes compilando con MinGW (podrías estar utilizando otro port como djgpp, o gcc sobre Linux, pero no lo creo en principio por el include <windows.h>... sin entrar en detalles, la explicación de porque la incluyes tampoco es correcta). Del sitio oficial: Bloodshed Dev-C++ is a full-featured Integrated Development Environment (IDE) for the C/C++ programming language.
18  Programación / Programación C/C++ / Re: insertar valor de la variable en mysql desde una aplicacion en c en: 26 Agosto 2012, 23:16 pm
Estimado, lo escribo con ánimo de disipar la confusion.

No comprendo a que se refiere con manejar datos muy largos de MySQL con %c. El especificador de formato "%c" indica que el parámetro debe ser tratado como char, y la biblia del C (K&R 2.2, tipos y tamaños de datos) dice que el char tiene el tamaño de byte, por ende eso es lo máximo que podrás menejar con %c, o ¿Puedes citar alguna arquitectura para la cual se implementó un compilador C con tipos de datos char de más de 8 bits?

Por otra parte, C no puede manejar automaticamente los tipos datos DATE de MySQL. C trabaja con tipos de datos básicos. Demás esta esta aclaración, pero puede ser utilidad: En Unix y demás sistemas POSIX (probablemente en muchos otros sitemas no POSIX), time_t (tiene el mismo nombre en la libreria estándar del C) es un entero que representa la cantidad de segundos transcurridos desde la medianoche UTC del 1 de enero de 1970 sin contar los segundos itercalares (http://es.wikipedia.org/wiki/Segundo_intercalar). Por ejemplo, el viernes 13 de febrero de 2009, exactamente a las 23:31:30 (UTC), el tiempo Unix se igualó a '1234567890' (Google celebró este momento con el doodle: "date +%s"). El formato de fecha y hora de MySQL es una cadena que sigue cualquiera de estos esquemas: YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, o YYMMDD. Puedes utilizar las funciones UNIX_TIMESTAMP() y FROM_UNIXTIME() para convertir entre valores TIMESTAMP de MySQL y los de Unix.

Utilizando tu ejemplo:

char fecha[20];
time_t now = time(NULL);
strftime(fecha, 20, "%Y-%m-%d %H:%M:%S", localtime(&now));
sprintf(consulta, "INSERT INTO nametable VALUES(%s)", fecha);
19  Programación / Programación C/C++ / Re: insertar valor de la variable en mysql desde una aplicacion en c en: 26 Agosto 2012, 14:37 pm
Hola txenfsm, estuve ausente del foro por unos cuantos meses!
A esta altura espero que hayas solucionado tu problema, de no ser así, la expresión como la escribes sólo funcionara si las tres variables (nomb, id y fecha) son del tipo “const char *”. Si fecha es del tipo “char” y la demás variables son “const char *” debería ser así:

sprintf(consulta, "INSERT INTO mitabla (nombre,dni,fecha) VALUES('%s','%s','%c')",nomb, id, fecha);
20  Programación / Programación C/C++ / Re: Programa usuario y contraseña en: 26 Agosto 2012, 14:28 pm
En tu IF estas comparando con valida1, no deberías comparar con contrasena?
El operador de comparación es !=, tu escribes =!.
No necesitas en "\n" en scanf, con "%d" es suficiente, lo que haces es esperar un RETURN extra.
Modificando un poco tu codigo:

Código
  1.    do {
  2.        printf("Ingrese su contraseña: ");
  3.        scanf("%d", &contrasena);
  4. if (contrasena == valida1)
  5. break; // sale del while
  6. if (contrasena == valida2)
  7. break; // sale del while
  8. printf("Su contraseña no es valida\n");
  9. } while(1); // vuelve al inicio del bucle
  10.    printf("Su codigo es valido!\n");
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines