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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6 7 8 9 10
31  Programación / Programación C/C++ / Re: Pasar a función un arreglo con punteros o con el nombre del arreglo como puntero en: 9 Junio 2016, 03:47 am
¿hay alguna diferencia en hacerlo de una manera u otra?

Ambos son equivalentes el primer caso es redundante no es necesario pasar un puntero a un array esto se hace por defecto el array siempre decae a puntero al primer elemento cuando lo pasas como parámetro a una función.

Un saludo.
32  Programación / Programación C/C++ / Re: Descomponer numero en: 8 Junio 2016, 19:30 pm
Con ese ejemplo funciona pero si pongo 123444, queda asi
4441 (en vez de 4442)
31

No entiendo porque no funciona

Se debe a la conversión que ocurre al asignar un double a un entero donde se produce un redondeo, debes usar ceil() en ambos casos.

Código
  1. acupar += ceil(digitos[i ]* pow(10,par));
  2. acuimpar += ceil(digitos[i] * pow(10,impar));

33  Programación / Programación C/C++ / Re: Tamaño de estructura varia con el orden de sus miembros en: 8 Junio 2016, 00:24 am
Los compiladores alinean automaticamente los datos, insertando bytes de relleno para asegurar que cada miembro este alineado correctamente para un acceso mas rapido a ellos.

Código
  1. typedef struct
  2. {
  3.    char a;
  4.    char relleno[3]; // para completar 4 bytes
  5.    int b;
  6.    char c;
  7.    char relleno[3]; //para completar 4 bytes
  8. } A;
  9.  
  10. typedef struct
  11. {
  12.    char a;
  13.    char c;
  14.    char relleno[2]; //para completar 4 bytes
  15.    int b;
  16. } B;

Una instancia de una estructura tendra la alineacion de su miembre de mayor número bytes. Puedes evitar la alineación usando la directiva #pragma pack(1) pero no es recomendable porque podría tener un severo impacto en el rendimiento
34  Programación / Programación C/C++ / Re: [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos) en: 5 Junio 2016, 23:14 pm
En 32 bits sí que sería lo mismo XDD

En 64 bits no, pues la primera se incrementa en 4 y la segunda en 8 :P

Gracias :D

Supongamos el siguiente arreglo:

Código
  1. int arreglo[8];

arreglo es de tipo int* un puntero al primer elemento de arreglo
&arreglo es de tipo int (*)[8] un puntero a un arreglo de 8 enteros

Por lo tanto si hacemos arreglo + 1 incrementara 4 bytes (suponiendo int == 4 bytes) pero &arreglo + 1 sabiendo que es un puntero a arreglo de 8 ints el incremento sera 4 * 8 = 32 saltamos 8 bytes justo despues del final de arreglo. Puedes comprobar esto haciendo:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int array[8];
  6.    int n = *(&array + 1) - array;
  7.    printf("Size array = %d\n", n); //Debe imprimir 8
  8.  
  9.    return 0;
  10. }
  11.  
  12.  
35  Programación / Programación C/C++ / Re: [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos) en: 4 Junio 2016, 19:46 pm
No es coincidencia el estándar garantiza que arreglo y &arreglo siempre apuntaran a la misma dirección (el primer elemento del array) pero tienen tipos diferentes no es lo mismo hacer

Código
  1. arreglo + 1
Y
Código
  1. &arreglo + 1
36  Programación / Programación C/C++ / Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo? en: 2 Junio 2016, 01:46 am
O si prefieres usar un arreglo bidimencional y complicar  el calculo un poco tenemos que

Porqué no?  :silbar:

Código
  1. int ascendente = 1;
  2. int descendente = M*N;
  3.  
  4. matriz_decendente[i][j] = descendente--;
  5. matriz_ascendente[i][j] = ascendente++;
37  Programación / Programación C/C++ / Re: ayuda con la diagonal principal de una matriz para dejarla vacía en: 1 Junio 2016, 20:00 pm
Una posible solución
Código
  1. int main()
  2. {
  3.    int i, j, n = 16;
  4.    char array[n][n];
  5.  
  6.    srand (time(NULL));
  7.  
  8.    for( i = 0; i < n; i++ )
  9.        for( j = 0; j < n; j++ )
  10.            array[i][j] = i==j ? "*/+-%&$"[rand()%7] : 1+rand()%9+'0';
  11.    //Imprimir aqui
  12.    return 0;
  13. }
38  Programación / Programación C/C++ / Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica en: 29 Mayo 2016, 21:14 pm
"se ha perdido la referencia a esa memoria dinámica"

Eso no pasa al menos en los sistemas operativos modernos porque estos realizan un seguimiento de toda la memoria reservada por un programa y cuando este finaliza (por cualquier razón) sin haber liberado la memoria el sistema procede a recuperar toda la memoria asignada
39  Programación / Programación C/C++ / Re: Arreglo con memoria dinámica en lenguaje C. en: 25 Mayo 2016, 23:04 pm
Código
  1. while( i <= MAX )

Estas accediendo fuera de los límites del array con <= cambialo por < o reservar size + 1
40  Programación / Programación C/C++ / Re: Arreglo con memoria dinámica en lenguaje C. en: 25 Mayo 2016, 22:48 pm
Donde esta el código que produce ese error?
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