Questo sito ha bisogno della pubblicità per poter essere mantenuto. Gentilmente disabilita il blocco della pubblicità nel tuo browser per questo sito web.
Caricamento in corso...Caricamento in corso...
Caricamento in corso...

Giorni trascorsi

Scrivere il programma che verifica la funzione giorni Trascorsi.

 

/*
  www.highlevel.it
  Description: Programma atto a calcolare il numero dei giorni mancanti alla fine dell'anno
*/
//Direttive
#include<stdio.h>
#include<stdlib.h>
//Dichiarazione funzioni
int bise(int anno);
int controlloValori(int g,int m,int a);
int giorniTrascorsi(int g,int m,int a);
//Programma principale
int
main()
{
    int giorno,mese,anno, //Variabili di input
        errore,               //Variabile che segnala la presenza di errori (0=Ok, 1=errore)
        giorniMancanti;       //Variabile di output
        //Descrizione
    printf("\n\n|******************************************************************************|\n");
    printf("|*                               GiorniMancanti                               *|\n");
    printf("|******************************************************************************|\n");
    printf("|*     Questo programma calcola i giorni che mancano alla fine dell'anno      *|\n");
    printf("|******************************************************************************|\n");
    //Inserimento data
    printf("\n\nInserisci la data nel formato giorno mese anno\n");
    printf("\nper esempio 10 11 2008\n");
    printf("\n---->  ");
    scanf("%d%d%d",&giorno,&mese,&anno);  
    //Controllo data per verificare eventuali errori
        errore=controlloValori(giorno,mese,anno);
        //Mostro il risultato
        if(errore==0)
        {    
        giorniMancanti=366-giorniTrascorsi(giorno,mese,anno);
        printf("\n\nAlla fine dell'anno mancano %d giorni.\n\n\n",giorniMancanti);
    }
    else
    {
                printf("\n\nImpossibile calcolare i giorni mancanti alla fine dell'anno.\n\n\n");
    }
    //Interrompo il programma per permettere all'utente di visualizzare il risultato
    system("PAUSE");
    //Comunico al PC che il programma è stato eseguito correttamente
    return(0);
}
//Funzione bisestile
int bise(int anno)
{
    return (((anno%4)==0)&&(((anno0)!=0)||((anno%400)==0)));
}
//Funzione che calcola i giorni trascorsi    
int giorniTrascorsi(int g,int m,int a)
{
    int n;  
    switch(m)
    { 
        case 1:
            n=g;
            break;
        case 2:
            n=g+31;
            break;
        case 3:
            n=g+28+31+bise(a);
            break;
        case 4:
            n=g+28+31*2+bise(a);
            break;
        case 5:
            n=g+28+30+31*2+bise(a);
            break;
        case 6:
            n=g+28+30+31*3+bise(a);
            break;
        case 7:
            n=g+28+30*2+31*3+bise(a);
            break;
        case 8:
            n=g+28+30*2+31*4+bise(a);
            break;
        case 9:
            n=g+28+30*2+31*5+bise(a);
            break;
        case 10:
            n=g+28+30*3+31*5+bise(a);
            break;
        case 11:
            n=g+28+30*3+31*6+bise(a);
            break;
        case 12:
            n=g+28+30*4+31*6+bise(a);
            break;
    }
    return (n);
}
//Funzione che controlla la presenza di errori
int controlloValori(int g,int m,int a)
{
    int e;e=0;//Variabile che segnala la presenza di errori (0=Ok, 1=errore)
    printf("\n****************************************************************\n");
    printf("\nErrori riscontrati:\n\n\n"); 
    if(!((g>=1)&&(g<=31)))
    {
        printf("-1\n\nGiorno: %d , si accettano soltanto valori compresi tra 1 e 31\n\n",g);
        e=1;
    }
    if(!((m>=1)&&(m<=12)))
    {
        printf("-2\n\nMese: %d , si accettano soltanto valori compresi tra 1 e 12\n\n",m);
        e=1;
    }
    if(!((a>=0)&&(a<=3001)))
    {
        printf("-3\n\nAnno: %d , si accettano soltanto valori compresi tra 0 e 3001\n\n",a);
        e=1;
    }
    switch(m)
    {
        case 2:
            if((g>28)&&(bise(a)==0))
            {
                printf("0\n\nGiorno: %d , nel %d Febbraio e' di 28 giorni\n\n",g,a);
                e=1;
            }
            else if((g>29)&&(bise(a)==1))
            {
                printf("Giorno: %d , nel %d Febbraio e' di 29 giorni\n\n",g,a);
                e=1;
            }
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            {
                if(g==31)
                {
                    if(m==4)
                    {
                        printf("Giorno: %d , Aprile e' di 30 giorni\n\n",g);
                    }
                    if(m==6)
                    {
                        printf("Giorno: %d , Giugno e' di 30 giorni\n\n",g);
                    }
                    if(m==9)
                    {
                        printf("Giorno: %d , Settembre e' di 30 giorni\n\n",g);
                    }
                    if(m==11)
                    {
                        printf("Giorno: %d , Novembre e' di 30 giorni\n\n",g);
                    }
                    e=1;
                }
                break;
            }
    } 
    if(e==0)
    {
        printf("Nessuno\n");
    }
    printf("\n****************************************************************\n");
    return(e);
}