Ir para conteúdo
Fórum Script Brasil

SkullCrusher

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por SkullCrusher

  1. Por favor preciso de ajuda para compreender uma parte do código abaixo:

    É um código para desenvolver calendários e na função abaixo:

    int dayNumber(int day, int month, int year)
    {
        static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
        year -= month < 3;
        return ( year + year/4 - year/100 +
                 year/400 + t[month-1] + day) % 7;
    }

    A minha dúvida é sobre os numeros desta linha:

    static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1,  4, 6, 2, 4 }; 

    Eu sei que os numeros se referem ao dia da semana mas o que eu não entendo é porque os números estão nessa ordem?

     

    Abaixo está o códico completo:

     

     

     

    // A C++ Program to Implement a Calendar
    // of an year
    #include<bits/stdc++.h>
    using namespace std;
     
    /*A Function that returns the index of the day
      of the date- day/month/year
      For e.g-
     
      Index     Day
      0         Sunday
      1         Monday
      2         Tuesday
      3         Wednesday
      4         Thursday
      5         Friday
      6         Saturday*/
    int dayNumber(int day, int month, int year)
    {
     
        static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1,
                           4, 6, 2, 4 };
        year -= month < 3;
        return ( year + year/4 - year/100 +
                 year/400 + t[month-1] + day) % 7;
    }
     
    /*
      A Function that returns the name of the month
      with a given month number
     
      Month Number     Name
      0                January
      1                February
      2                March
      3                April
      4                May
      5                June
      6                July
      7                August
      8                September
      9                October
      10               November
      11               December */
    string getMonthName(int monthNumber)
    {
        string months[] = {"January", "February", "March",
                           "April", "May", "June",
                           "July", "August", "September",
                           "October", "November", "December"
                          };
     
        return (months[monthNumber]);
    }
     
    /* A Function to return the number of days in
       a month
     
      Month Number     Name        Number of Days
      0                January     31
      1                February    28 (non-leap) / 29 (leap)
      2                March       31
      3                April       30
      4                May         31
      5                June        30
      6                July        31
      7                August      31
      8                September   30
      9                October     31
      10               November    30
      11               December    31
     
    */
    int numberOfDays (int monthNumber, int year)
    {
        // January
        if (monthNumber == 0)
            return (31);
     
        // February
        if (monthNumber == 1)
        {
            // If the year is leap then February has
            // 29 days
            if (year % 400 == 0 ||
                    (year % 4 == 0 && year % 100 != 0))
                return (29);
            else
                return (28);
        }
     
        // March
        if (monthNumber == 2)
            return (31);
     
        // April
        if (monthNumber == 3)
            return (30);
     
        // May
        if (monthNumber == 4)
            return (31);
     
        // June
        if (monthNumber == 5)
            return (30);
     
        // July
        if (monthNumber == 6)
            return (31);
     
        // August
        if (monthNumber == 7)
            return (31);
     
        // September
        if (monthNumber == 8)
            return (30);
     
        // October
        if (monthNumber == 9)
            return (31);
     
        // November
        if (monthNumber == 10)
            return (30);
     
        // December
        if (monthNumber == 11)
            return (31);
    }
     
    // Function to print the calendar of the given year
    void printCalendar(int year)
    {
        printf ("         Calendar - %d\n\n", year);
        int days;
     
        // Index of the day from 0 to 6
        int current = dayNumber (1, 1, year);
     
        // i --> Iterate through all the months
        // j --> Iterate through all the days of the
        //       month - i
        for (int i = 0; i < 12; i++)
        {
            days = numberOfDays (i, year);
     
            // Print the current month name
            printf("\n  ------------%s-------------\n",
                   getMonthName (i).c_str());
     
            // Print the columns
            printf("  Sun  Mon  Tue  Wed  Thu  Fri  Sat\n");
     
            // Print appropriate spaces
            int k;
            for (k = 0; k < current; k++)
                printf("     ");
     
            for (int j = 1; j <= days; j++)
            {
                printf("%5d", j);
     
                if (++k > 6)
                {
                    k = 0;
                    printf("\n");
                }
            }
     
            if (k)
                printf("\n");
     
            current = k;
        }
     
        return;
    }
     
    // Driver Program to check above funtions
    int main()
    {
        int year = 2016;
        printCalendar(year);
     
        return (0);
    }
     

×
×
  • Criar Novo...