Calcular días que quedan hasta final de año

Iniciado por DickGumshoe, 15 Enero 2012, 18:57 PM

0 Miembros y 1 Visitante están viendo este tema.

DickGumshoe

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:

#include <stdlib.h>
#include <stdio.h>

int main(){
   
   
    int n,i,x,d,suma,transcurridos,restantes;
    int dias[12]={31,28,31,30,31,30,31,31,30,31,30,31};
   
    printf("Elige un dia del 1 al 31");
    scanf("%d",&d);
   
    do{
    printf("Elige un mes del 1 al 12");
    scanf("%d",&n);
    }
    while(n<1||n>12);
   

   
    for(i=0;i<n;i++);
   
    transcurridos+=dias[n-1];
    transcurridos+=d;
    restantes=365-transcurridos;
   
    printf("Dias restantes: %d",restantes);
   
    system("pause");
    return 0;
}


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.


bdoX

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.


#include <stdlib.h>
#include <stdio.h>

int main ()
{
    int n, d, i, transcurridos, restantes;
    int dias[] = {
        31, 28, 31, 30,
        31, 30, 31, 31,
        30, 31, 30, 31
    };
   
    /*inicialiso los valores para hacer operaciones aritmeticas*/
    transcurridos = 0;
    restantes     = 0;
   
    do
    {
        printf ( "Elige un dia del 1 al 31: " );
        scanf ( "%d", &d );
    } while ( d < 1 || d > 31 );
   
    do
    {
        printf ( "Elige un mes del 1 al 12: " );
        scanf ( "%d", &n );
    } while ( n < 1 || n > 12 );

    /*sumo hasta el mes anterior y le sumo la cantidad de dias
    transcurridos*/
    for ( i = 0; i < (n - 1); i++ )
    {
        transcurridos += dias[i];// No existe el dia cero
    }
   
    transcurridos += d;
    restantes = (365 - transcurridos);
   
    printf ( "Dias restantes: %d\n", restantes );
    system ( "pause>nul" );
   
    return 0;
}



saludos!

DickGumshoe

¡Muchas gracias!

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

Muchas gracias.

Saludos.

bdoX

Que bueno que te haya servido mi ayuda!

saludOS