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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10
71  Programación / Programación C/C++ / Re: [C] (void*) ¿Para qué sirve? en: 18 Noviembre 2015, 19:22 pm
¿para que sirve usar (void*) ahí?

El especificador de formato %p espera un argumento de tipo void*, por lo tanto es necesario el cast.

¿Qué pasa si yo hago esto?

Al omitir el cast tu aplicacion queda expuesta a comportamiento indefinido.
72  Programación / Programación C/C++ / Re: Recorrido de matriz diagonal secundaria c++ en: 21 Octubre 2015, 00:07 am
Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.    int matriz[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
  6.    int x = 0, y = 0, i;
  7.  
  8.    for(;;)
  9.    {
  10.        printf("%*s", ((y == 0) ? 3 - x : y) * 2, "");
  11.        for(i = 0; x - i >= 0 && y + i < 4  ; i++)
  12.        {
  13.            printf("%3d ", matriz[x - i][y + i]);
  14.        }
  15.        printf("\n");
  16.        if(x < 3)
  17.            ++x;
  18.        else if(y < 3)
  19.            ++y;
  20.        else
  21.            break;
  22.    }
  23.    return 0;
  24. }
73  Programación / Programación C/C++ / Re: Cómo convertir un string en una lista de strings en: 18 Octubre 2015, 18:10 pm
La utilización de GOTO está considerada una mala práctica de programación, la cual lleva a un código "espagueti".

Deberías leerte este articulo escrito por Edjer Dijkstra para una publicación de la ACM en 1968

Siempre los anti-goto citan directamente el articulo de Edsger Dijkstra's para justificar su posición de rechazo hacia goto. Lastima que el articulo de Dijkstra's prácticamente no tiene nada que ver con la forma de que goto es utilizado estos días, por lo tanto lo que dice el articulo tiene poca o ninguna aplicabilidad en la escena de programación moderna.

Uno puede llegar a escribir código difícil de leer sin usar goto, por lo tanto no es la
característica del lenguaje la que conduce a un código ilegible e imposible de mantener ni tampoco la sintaxis mas bien son los malos programadores los que causan esto.

Evitar usar goto porque quiere evitar producir código ilegible no tiene sentido si su código goto es legible, entonces no hay nada malo en ello, el problema viene cuando se abusa de ellos. Por lo que todo esto me lleva a la conclusión de que todo este rechazo hacia goto es solo un modismo establecido no porque algunos programadores lo usen de manera ineficiente yo debería evitar usarlo.

Saludos!
74  Programación / Programación C/C++ / Re: Cómo convertir un string en una lista de strings en: 18 Octubre 2015, 01:38 am
goto no deja de ser un ciclo (terriblemente aplicado)

A que te refieres con terriblemente aplicado?
75  Programación / Programación C/C++ / Re: Cómo convertir un string en una lista de strings en: 17 Octubre 2015, 16:12 pm
Tambien puedes usar goto de esta forma

Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.    char str[] = "Pablito clavo un clavito en la calva de un calvito";
  6.    size_t i = 0;
  7.  
  8. start:
  9.    if (str[++i] == '\0')
  10.        goto end;
  11.    if (str[i] == ' ')
  12.        str[i] = '\n';
  13.    goto start;
  14. end:
  15.    printf("%s\n", str);
  16.  
  17.    return 0;
  18. }
  19.  
76  Programación / Programación C/C++ / Re: Como imprime este programa varios números sin bucles ni recursión en: 15 Septiembre 2015, 23:21 pm
Muchas gracias por el enlace son unos crack con Google por aqui xD .. la verdad no recuerdo de donde la saque pero era un foro en ingles, ahora voy a leer la pagina que me pasaste..
77  Programación / Programación C/C++ / Como imprime este programa varios números sin bucles ni recursión en: 15 Septiembre 2015, 22:32 pm
Me he encontrado un codigo en C++ muy extraño, el cual imprime una determinada contidad de numeros uno debajo de otro, hasta ahi todo normal pero lo hace sin usar ningun tipo de bucles ni recursión.

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<int N>
  5. class PrintOneToN
  6. {
  7. public:
  8.    static void print()
  9.    {
  10.        PrintOneToN<N-1>::print();  // Note that this is not recursion
  11.        cout << N << endl;
  12.    }
  13. };
  14.  
  15. template<>
  16. class PrintOneToN<1>
  17. {
  18. public:
  19.    static void print()
  20.    {
  21.        cout << 1 << endl;
  22.    }
  23. };
  24. int main()
  25. {
  26.    const int N = 100;
  27.    PrintOneToN<N>::print();
  28.    return 0;
  29. }

Alguien entiendo como funciona este codigo?. Si es asi podria explicarme porfavor ..
78  Programación / Programación C/C++ / Re: Punteros y memoria dinamica en: 30 Agosto 2015, 03:13 am
Otra aproximación con la correspondiente liberación de memoria del array de estructuras y algunas que otras mejoras

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. typedef struct Persona
  7. {
  8.    char *nombre;
  9.    int edad;
  10.    int sexo;
  11. } Persona;
  12.  
  13. typedef struct
  14. {
  15.    Persona *array;
  16.    size_t used;
  17.    size_t size;
  18. } Array;
  19.  
  20. void initArray(Array *a, size_t initialSize)
  21. {
  22.    a->array = (Persona*)calloc(initialSize , sizeof(Persona));
  23.    a->used = 0;
  24.    a->size = initialSize;
  25. }
  26.  
  27. void push_back(Array *a, Persona element)
  28. {
  29.    if (a->used == a->size)
  30.    {
  31.        a->size *= 2;
  32.        a->array = (Persona *)realloc(a->array, a->size * sizeof(Persona));
  33.        memset(&a->array[a->used],0,sizeof(Persona) * (a->size - a->used));
  34.    }
  35.    a->array[a->used].nombre = (char*)malloc(strlen(element.nombre) + 1);
  36.    strcpy(a->array[a->used].nombre, element.nombre);
  37.    a->array[a->used].edad = element.edad;
  38.    a->array[a->used].sexo = element.sexo;
  39.    a->used++;
  40. }
  41.  
  42. void freeArray(Array *a)
  43. {
  44.    int i;
  45.    for (i = 0; i < a->used; i++)
  46.    {
  47.        free(a->array[i].nombre);
  48.        a->array[i].nombre = NULL;
  49.    }
  50.    free(a->array);
  51.    a->array = NULL;
  52.  
  53.    a->used = 0;
  54.    a->size = 0;
  55. }
  56.  
  57. void cargarPersonas(Array * arr)
  58. {
  59.    int i, edad, random;
  60.    int TAM = rand() % 30 + 1;
  61.    Persona temp;
  62.  
  63.    char *hombres[] = {"Ramiro","Pedro","Federico","Jose","Antonio","Pablo","Raul","Gustavo","Gonzalo","Airton"};
  64.    char *mujeres[] = {"Mariana","Jennifer","Luz","Roxana","Ana","Sol","Micaela","Romina","Melina","Camila"};
  65.  
  66.    for ( i = 0; i < TAM; i++)
  67.    {
  68.        edad = rand() % 80 + 1;
  69.        temp.edad = edad;
  70.        if( (random = rand() % 10) % 2 == 0)
  71.        {
  72.            temp.nombre = hombres[random];
  73.            temp.sexo = 0;
  74.        }
  75.        else
  76.        {
  77.            temp.nombre = mujeres[random];
  78.            temp.sexo = 1;
  79.        }
  80.        push_back(arr, temp);
  81.    }
  82. }
  83.  
  84. void mostrarPersonas(Array *arr)
  85. {
  86.    int i;
  87.    for ( i = 0; i < arr->used; i++)
  88.    {
  89.        printf("(%d) Nombre: %s - Edad: %d - Sexo: ", i, arr->array[i].nombre, arr->array[i].edad);
  90.        if ( arr->array[i].sexo == 0)
  91.            printf("Masculino");
  92.        else
  93.            printf("Femenino");
  94.        printf("\n");
  95.    }
  96. }
  97.  
  98. int main(void)
  99. {
  100.    srand(time(NULL));
  101.    Array a;
  102.    initArray(&a, 5);
  103.  
  104.    cargarPersonas(&a);
  105.    mostrarPersonas(&a);
  106.  
  107.    freeArray(&a);
  108.    return 0;
  109. }
  110.  
79  Programación / Programación C/C++ / Re: programa q cuenta cuantas palabras tienen 4 letras y termina de leer un arreglo en: 24 Agosto 2015, 02:04 am
Yo lo haría mas o menos así

 
Código
  1. #include <string.h>
  2. #include <stdio.h>
  3.  
  4. int main(void)
  5. {
  6.    char str[64];
  7.    int pos = 0, i, cant = 0;
  8.  
  9.    char *r = fgets(str, sizeof(str), stdin);
  10.    char len = strlen(str);
  11.  
  12.    if(r != NULL && str[len - 1] == '\n')
  13.       str[len - 1] = '\0';
  14.  
  15.    for (i = 0; str[i] != '\0'; i += pos + 1)
  16.        if(((pos = strcspn( str + i, " " )) == 4))
  17.            cant++;
  18.  
  19.    printf("Palabras con 4 letras son: %d\n", cant);
  20.  
  21.    return 0;
  22. }
  23.  
80  Programación / Programación C/C++ / Re: Ayuda con programa de posición de letras en: 1 Agosto 2015, 15:33 pm
Otra aproximación seria haciendo uso de la función strchr y una tabla, con la que podríamos ubicar fácilmente cualquier letra inclusive la ñ, sin complicar demasiado el código.

Código
  1. int posicion(char c)
  2. {
  3.    const char * abc = "abcdefghijklmnñopqrstuvwxyz";
  4.    const char * letra;
  5.  
  6.    c = tolower ((unsigned char)c);
  7.    letra = strchr (abc, c);
  8.  
  9.    return letra ? letra - abc : -1;
  10. }

Saludos
Páginas: 1 2 3 4 5 6 7 [8] 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines