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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  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 28 ... 90
121  Programación / Programación C/C++ / Re: Duda direcciones de memoria C en: 18 Julio 2013, 16:28 pm
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int* px, py;
  6.    int *pz, x=1, y=2, z=3;
  7.  
  8.    px = &x;
  9.    py = &y;
  10.    pz = &z;
  11.  
  12.    printf("%X  %X  %X", px, py, pz);
  13.    printf("\n%d  %d  %d", x, y, z);
  14.    return 0;
  15. }
  16.  

Según este codigo, lo que dice Oblivi0n es verdad
122  Programación / Programación C/C++ / Re: Duda direcciones de memoria C en: 18 Julio 2013, 16:17 pm
Seriously? Puedes darme una referencia fidedigna en la que se indique esto?

Que tiene de malo el ejemplo que me ha puesto Oblivi0n, yo no le veo el fallo, tiene sentido.
123  Programación / Programación C/C++ / Re: Duda direcciones de memoria C en: 18 Julio 2013, 16:07 pm
Gracias a los dos por responder.

Saludos
124  Programación / Programación C/C++ / Re: Programa para averiguar el dia de la semana en: 18 Julio 2013, 16:06 pm
Código
  1. ndias= (long) (30.42 * (mm - 1) + dd); //dia aproximado del año

Enero: 31 días
Febrero: 28 días
Marzo: 31 días
Abril: 30 días
...

Total días por año: 365 días ( 12 meses )
Media de días por mes: 365 / 12 = 30.41666

Para calcular el número de días calcula la media de días por mes y lo multiplica por el número de mes que hayas puesto.

Luego hace un ajuste rápido para los meses de menos de 31 días y ajusta también posibles años bisiestos y listo.

Es a partir de esa linea lo que no entiendo, por que si es Febrero le suma un dia, si esta entre Marzo y Julio se lo resta, a partir de esa linea no entiendo ningun ajuste de los que hace.
125  Programación / Programación C/C++ / Re: Duda direcciones de memoria C en: 18 Julio 2013, 15:55 pm
Aprovecho este post para preguntar una cosa, que diferencia hay entre estas dos declaraciones:

Código
  1. int* ptrArray1;

Código
  1. int *ptrArray1;
126  Programación / Programación C/C++ / Programa para averiguar el dia de la semana en: 18 Julio 2013, 15:40 pm
Buenas, en un libro que estoy leyendo viene un programa, que a partir de una fecha base (Lunes, Enero 1, 1900) averigua el dia de la semana introduciendo dia mes y año. El programa entero es el siguiente:

Código
  1. #include <stdio.h>
  2.  
  3. void leerentrada(int *pm, int *pd, int *pa);
  4. int convertir(int mm, int dd, int aa);
  5.  
  6. int main()
  7. {
  8.    int mm, dd, aa;
  9.    int dia_semana;
  10.  
  11.    static char *diasemana[] = {    "Domingo",
  12.                                    "Lunes",
  13.                                    "Martes",
  14.                                    "Miércoles",
  15.                                    "Jueves",
  16.                                    "viernes",
  17.                                    "Sabado"    };
  18.  
  19.    static char *mes[] = {  "Enero",
  20.                            "Febrero",
  21.                            "Marzo",
  22.                            "Abril",
  23.                            "Mayo",
  24.                            "Junio",
  25.                            "Julio",
  26.                            "Agosto",
  27.                            "Septiembre",
  28.                            "Octubre",
  29.                            "Noviembre",
  30.                            "Diciembre" };
  31.  
  32.    printf("Rutina de conversión de fecha\n Para parar, introducir 0 0 0");
  33.  
  34.    leerentrada(&mm, &dd, &aa);
  35.  
  36.    while (mm > 0)
  37.    {
  38.        dia_semana = convertir (mm, dd, aa);
  39.        printf("\n%s, %s %d, %d", diasemana[dia_semana], mes[mm-1], dd, aa);
  40.        leerentrada(&mm, &dd, &aa);
  41.    }
  42.    return 0;
  43. }
  44.  
  45. void leerentrada(int *pm, int *pd, int *pa)
  46. {
  47.    printf("\n\nIntroducir mm dd aaaa: ");
  48.    scanf("%d %d %d", pm, pd, pa);
  49. }
  50.  
  51. int convertir (int mm, int dd, int aa)
  52. {
  53.    long int ndias;     // numero de dias desde el comienzo de 1900
  54.    long int nciclos;   //numero de ciclos de 4 años despues de 1900
  55.    int nanios;         //numero de años despues del ultimo ciclo de 4 años
  56.    int dia;            //dia de la semana (0, 1, 2, 3, 4, 5 o 6)
  57.  
  58.    aa -= 1900;
  59.  
  60.    ndias= (long) (30.42 * (mm - 1) + dd); //dia aproximado del año
  61.  
  62.    if (mm == 2) ++ndias;   //ajuste para febrero
  63.    if ((mm > 2) && (mm < 8)) --ndias;  //ajuste para marzo-julio
  64.    if ((aa % 4 == 0) && (mm > 2)) ++ndias; //ajuste para el año bisiesto
  65.  
  66.    nciclos = aa / 4;   //ciclos de 4 años a partir de 1900
  67.  
  68.    ndias += nciclos * 1461;    //añadir dias por ciclos de 4 años
  69.  
  70.    nanios = aa % 4;        //años despues del ultimo ciclo de 4 años
  71.  
  72.    if (nanios > 0) ndias += 365 * nanios + 1; //añadir dias por años despues del ultimo ciclo
  73.  
  74.    if (ndias > 59) --ndias; //ajustar para 1990 (NO años bisiesto)
  75.  
  76.    dia = ndias % 7;
  77.  
  78.    return (dia);
  79. }

el codigo esta copiado exactamente igual que en libro, con los comentarios para explicarlo.

Me ha costado, pero he entendido, en parte, la logica del programa, porque lo que no entiendo es como hace la funcion convertir para sacar el dia de la semana, de esa funcion la unica linea que entiendo es esta:

Código
  1. aa -= 1900;

Lo que hace es sacar los años que han pasado desde el año 1900 hasta hoy, pero a partir de ahi no entiendo nada de nada y queria pedir a ver si alguien me lo explica de alguna manera mas clara que en libro.
127  Programación / Programación C/C++ / Re: Duda con paso de un array a una función. en: 18 Julio 2013, 11:38 am
Vale, todo solucionado entonces, muchas gracias.

Saludos
128  Programación / Programación C/C++ / Re: Duda con paso de un array a una función. en: 18 Julio 2013, 00:43 am
No es ningun codigo completo, era un ejemplo copiado exactamente del libro, que me lo explicaba asi, lo que ahora quiero saber es si es obligatorio saber la posicion final del array, porque segun me explica el libro y como muestra el ejemplo que puse, solo hace falta la posicion de partida.

Saludos
129  Programación / Programación C/C++ / Re: Duda con paso de un array a una función. en: 18 Julio 2013, 00:08 am
Entonces el codigo que puse esta bien o no?
130  Programación / Programación C/C++ / Re: Duda con paso de un array a una función. en: 17 Julio 2013, 22:24 pm
Por partes:

Código
  1. float z[100];

En esa línea estás creando un vector de floats... has de saber que cada float, por si mismo, no sabe nada de su entorno:

* No sabe que pertenece a un vector
* No sabe qué posición ocupa.
* No sabe cual es el elemento anterior ( si tiene ).
* No sabe cual es el elemento siguiente ( si tiene ).

La única forma de saber el orden del vector es mediante el vector z.


No entiendo muy bien por que me dices esto, no entiendo que tiene que ver una cosa con la otra. A ver si lo entiendo, me estas queriendo decir que como cada float no sabe que pertenece a un vector y tampoco sabe su ubicacion, tengo que indicar la primera posicion desde la que quiero empezar, y la final donde quiero terminar?

Los arrays no se pasan como parámetro a una función, en su lugar se pasa un puntero a su primer elemento (todo esto de forma transparente para ti).
Perdón, me he expresado mal, ya se que es un puntero a la direccion del primer elemento y a partir de ahi se accede a los demas por desplazamiento lineal, lo que queria decir es que no es obligatorio acceder siempre a partir del primer elemento, sino que se puede desde cualquiera elemento del array.

Saludos
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 28 ... 90
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines