Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DickGumshoe en 15 Enero 2012, 18:57 pm



Título: Calcular días que quedan hasta final de año
Publicado por: DickGumshoe en 15 Enero 2012, 18:57 pm
Hola.

Estoy practicando con ejercicios de arrays, y estaba haciendo uno en el que tengo que
hacer un array en el que inserto el número de días que tiene cada mes. A partir de ahí, le pido al usuario que inserte una fecha (sólo día y mes). Entonces, tengo que averiguar cuántos días quedan hasta final de año.

Mi código es:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main(){
  5.  
  6.  
  7.    int n,i,x,d,suma,transcurridos,restantes;
  8.    int dias[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  9.  
  10.    printf("Elige un dia del 1 al 31");
  11.    scanf("%d",&d);
  12.  
  13.    do{
  14.    printf("Elige un mes del 1 al 12");
  15.    scanf("%d",&n);
  16.    }
  17.    while(n<1||n>12);
  18.  
  19.  
  20.  
  21.    for(i=0;i<n;i++);
  22.  
  23.    transcurridos+=dias[n-1];
  24.    transcurridos+=d;
  25.    restantes=365-transcurridos;
  26.  
  27.    printf("Dias restantes: %d",restantes);
  28.  
  29.    system("pause");
  30.    return 0;
  31. }

Sé que mi problema está al plantear el bucle for (de hecho, lo que tengo en el bucle for no lo he enlazado con las instrucciones de debajo)...

Muchas gracias.

Saludos.



Título: Re: Calcular días que quedan hasta final de año
Publicado por: bdoX en 15 Enero 2012, 20:14 pm
Te arreglé un poco el codigo. Pero vas a tener que validar otras cosas, como por ejemplo. que cuando te pida el dia. colocas dia 30, despues te pide el mes, y colocas por ejemplo el mes 2, que quiere decir el mes de febrero que tiene 28 dias, tiene que indicarte un error, que te vuelva a pedir el dato. Eso es trabajo tuyo, no es dificil de arreglar ese detalle.

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main ()
  5. {
  6.    int n, d, i, transcurridos, restantes;
  7.    int dias[] = {
  8.        31, 28, 31, 30,
  9.        31, 30, 31, 31,
  10.        30, 31, 30, 31
  11.    };
  12.  
  13.    /*inicialiso los valores para hacer operaciones aritmeticas*/
  14.    transcurridos = 0;
  15.    restantes     = 0;
  16.  
  17.    do
  18.    {
  19.        printf ( "Elige un dia del 1 al 31: " );
  20.        scanf ( "%d", &d );
  21.    } while ( d < 1 || d > 31 );
  22.  
  23.    do
  24.    {
  25.        printf ( "Elige un mes del 1 al 12: " );
  26.        scanf ( "%d", &n );
  27.    } while ( n < 1 || n > 12 );
  28.  
  29.    /*sumo hasta el mes anterior y le sumo la cantidad de dias
  30.     transcurridos*/
  31.    for ( i = 0; i < (n - 1); i++ )
  32.    {
  33.        transcurridos += dias[i];// No existe el dia cero
  34.    }
  35.  
  36.    transcurridos += d;
  37.    restantes = (365 - transcurridos);
  38.  
  39.    printf ( "Dias restantes: %d\n", restantes );
  40.    system ( "pause>nul" );
  41.  
  42.    return 0;
  43. }
  44.  
  45.  

saludos!


Título: Re: Calcular días que quedan hasta final de año
Publicado por: DickGumshoe en 15 Enero 2012, 20:59 pm
¡Muchas gracias!

Me ha quedado muy claro, y ya he terminado el bucle do-while que faltaba.

Muchas gracias.

Saludos.


Título: Re: Calcular días que quedan hasta final de año
Publicado por: bdoX en 16 Enero 2012, 00:24 am
Que bueno que te haya servido mi ayuda!

saludOS