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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 26
1  Programación / Programación C/C++ / Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C en: 12 Agosto 2016, 18:20 pm
Por cierto que este post es un tributo a strtok(), una función sumamente poderosa y que no todos (especialmente principiantes) conocen bien.

Recuerdo una vez escribí un código para analizar sintácticamente un trozo de HTML que implementabla una tabla, ya saben con <tr>, <th>, etc. La idea era automatizar la tarea de descargar diariamente un fichero html desde un servidor (usando un gestor como wget.exe) y extraer los datos de la tabla a partir del HTML recibido. Luego, por supuesto una serie de cálculos a partir de dichos datos. Y bueno, ... ya me alejé del punto central, que era que mi programa analizaba todo el fragmento de <table> ... </table> usando strtok().

Aún debo tener el código por ahí, lo estuve buscando pero creo que se me borró de la computadora snif, snif, jaja.
2  Programación / Programación C/C++ / Re: Demostracion del problema de Monty Hall en: 12 Agosto 2016, 17:15 pm
Muy interesante  ;-)

Moraleja, siempre cambiar de opciones en la vida para así aumentar nuestras posibilidades de éxito
3  Programación / Programación C/C++ / Re: Crear mis propias funciones que hagan de: strcpy, strlen, strcmp, strcat en: 12 Agosto 2016, 17:13 pm
Bueno sería sencillo usando ciclos con contador, ahora coincido con Alberto en que no le veo la utilidad, excepto si fuera un trabajo con fines pedagógicos o tarea escolar.
Aquí un ejemplo que implementa versiones alternativas de strcpy(), strlen(). En las versiones alternativas se utiliza el prefijo "_" en el nombre de la función, para diferenciar de la versión estándar.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. char *_strcpy( char *s1, const char *s2 );
  5. size_t _strlen(const char *s);
  6.  
  7. int main()
  8. {
  9.    char s1[100];
  10.  
  11.    _strcpy( s1, "Hola Mundo" );
  12.    printf( "%s\n", s1 );
  13.    printf( "Longitud es: %d\n", _strlen(s1) );
  14.    return 0;
  15. }
  16.  
  17. char *_strcpy( char *s1, const char *s2 )
  18. {
  19.  
  20.    long i=0;
  21.  
  22.    while ( s2[i] != '\0' ) s1[i++] = s2[i];
  23.    s1[i] = '\0';
  24.  
  25.    return s1;
  26. }
  27.  
  28. size_t _strlen(const char *s)
  29. {
  30.  
  31.    size_t N;
  32.    char *p;
  33.  
  34.    p = (char *)s;
  35.    N = 0;
  36.    while ( *p != '\0' ) {
  37.        p++;
  38.        N++;
  39.    }
  40.  
  41.    return N;
  42. }

Salida:
Código
  1. Hola Mundo
  2. Longitud es: 10

Claro está, si son versiones creadas por uno mismo las opciones son infinitas, quizá haya mejores maneras que la que yo propuse y sólo puse un ejemplo.
4  Programación / Programación C/C++ / Re: Poner separador de miles a la hora de mostrar resultado en pantalla en: 12 Agosto 2016, 16:58 pm
Aquí un pequeño código que te da una idea de cómo podrías imprimir el número separado por miles. El trabajo lo realiza la función imprimirNumero(), luego deberás adaptarlo a tu programa específico, de la manera como esperas que trabaje.

En cuánto al programa que presentas como ejemplo, coincido con los otros foristas en que es muy extenso y parece que fue diseñado para una tarea mucho más ambiciosa que la que tú pretendes. Por lo tanto no es un buen punto de partida si sólo deseas llevar a cabo una tarea sencilla como ésta.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void imprimirNumero( int x );
  6.  
  7. int main()
  8. {
  9.    imprimirNumero( 2341528 );
  10.    printf( "\n" );
  11.    return 0;
  12. }
  13.  
  14. void imprimirNumero( int x )
  15. {
  16.    int BASE;
  17.    int count;
  18.  
  19.    /* determina la mayor potencia de 1000 que es menor o igual al numero */
  20.    BASE = 1;
  21.    while ( 1000 * BASE <= x ) BASE *= 1000;
  22.  
  23.    /* divide sucesivamente entre 1000 para imprimir el numero separado
  24.      * por miles */
  25.    while ( BASE > 1 ) {
  26.        printf( "%d.", x / BASE );
  27.        x = x % BASE;
  28.        BASE = BASE / 1000;
  29.    }
  30.    printf( "%d", x );
  31. }
5  Programación / Programación C/C++ / Re: Programa para Base de Datos en: 12 Agosto 2016, 16:30 pm
Bueno, ..... pero si la haces tú mismo NO CREO que resulte más segura que las ya existentes como MySQL que se utiliza en aplicaciones profesionales para servidores. También podrías investigar algús gestor de Base de Datos gratuito, pero con seguridad de nivel bancario (tal vez OpenSource)

Lo otro que te recomendaría es usar cifrado para los datos, como GnuPG o algo así. Aunque puedan vulnerar el contenido de la Base de Datos, la información obtenida sería imposible de comprender, y por lo tanto inútil.
6  Programación / Programación C/C++ / Re: Guardar palabras entre " " y separadas por comas en un array. Lenguaje C en: 12 Agosto 2016, 16:24 pm
Está genial, usas strtok() para crear dinámicamente un arreglo de apuntadores a las distintas "palabras" en que se divide la cadena original.
Sólo un pequeño detalle, muy pequeño, creo que faltó inicializar el total a 0:
Código:
int total = 0;
7  Programación / Programación C/C++ / Re: Ayuda con arreglos sencillos a bidimensional en un programa en: 12 Agosto 2016, 16:19 pm
Como te dijo Alberto, declara el arreglo calificaciones de 5x8, en el main() del programa, en lugar del arreglo competidor que tienes. Luego por ejemplo el leer() quedaría así:

Código
  1. void Leer( int calificaciones[][8] )
  2. {
  3.    cout<<"***** Tabla de resultados de una competicion ***** \n\n "<<endl;
  4.    for (int i = 0; i<5; i++) {
  5.        cout<<endl<<"Lectura de juez # "<<i+1<<endl<<endl;
  6.        for (int j = 0; j<8; j++) {
  7.            cout<<"Ingrese Lectura del competidor "<<j+1<<" : ";
  8.            cin>>calificaciones[i][j];
  9.        }
  10.    }
  11. }

Similarmente modifica la función calcular, para que la reciba el arreglo bidimensional e imprima las estadísticas de las puntuaciones de los 5 jueces para cada competidor.
8  Programación / Programación C/C++ / Re: Compilar una librería dinámica como estática C en: 7 Agosto 2016, 02:00 am
Do-while, es correcto, en Linux la extensión por defecto es "*.a" para bibliotecas estáticas, y "*.so" para dinámicas. En Windows es normalmente "*.dll" para biliotecas dinámicas.

Aquí un excelente tutorial, que fue justamente donde leí por primera vez lo relacionado con el tema http://www.chuidiang.com/clinux/herramientas/librerias.php
9  Programación / Programación C/C++ / Re: Funcion importar de txt en: 7 Agosto 2016, 01:58 am
Kuni, es obvio, los datos en binario se guardan como su nombre lo dice: en código binario.
La forma de leerlos es por medio de un apuntador a la variable donde serán copiados los datos, en nuestro ejemplo un apuntador a la variable persona, que es un tipo struct definido por el usuario. Luego, puedes enviar el valor de cada campo de dicho struct formateado a un fichero de texto, usando fprintf().

De hecho, si miras bien es justamente lo que hace la segunda parte del programa que de ti de muestra, sólo que usando printf() en lugar de fprintf() pues estamos escribiendo en la terminal en vez de un fichero. Para escribir en un fichero de texto usa  fprintf().
10  Programación / Programación C/C++ / Re: Compilar una librería dinámica como estática C en: 6 Agosto 2016, 23:44 pm
Hola, estoy recién leyendo el tema y no se si lo que voy a decir sea relevante al problema discutido. Pero creo que en GNU si están presentes ambas librerías, la dinámica y la estática, tomará por defecto la dinámica (por la razón que señaló ivance en su último mensaje).

Hay que indicar explícitamente al compilador que tome la estática en lugar de la dinámica. Pero a mí en ocasiones no me ha funcionado, pues insiste en tomar la dinámica. A veces he tenido que borrar temporalmente la librería dinámica para que se vea obligado a tomar la estática. Claro, en realidad no la he borrado, solo renombré la dinámica (para que el compilador no la encuentre), compilé y luego restituí todo como estaba.

P.D.
---------------------
Claro, eso de incluir las bibliotecas estáticas dentro del propio ejecutable es algo ineficiente, pues como dijo ivance, las bibliotecas dinámicas "están hechas para eso, poderlas manejar, re-compilar, modificar; sin tener que re-compilar el ejecutable". Para mí no tendría sentido a menos que fuese una biblioteca que tú mismo has creado con objetivos muy específicos, en cuyo caso sí conviene que, o crees una carpeta "lib" dentro del directorio de tu aplicación la cual contenga todas las bibliotecas, o compiles con las bibliotecas estáticas.
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 26
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines