FoxTuGa

How Many "Friday the 13th" - <Old>

May 8th, 2011
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.96 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. #define TRUE 1;
  6.  
  7. int N, anoM;
  8. int ano, mes, dia;
  9. int ainicial=1900;
  10. int sem=1, segunda, terça, quarta, quinta, sexta, sabado, domingo;
  11. int diaMax;
  12.  
  13. char c;
  14.  
  15. int main()
  16. {
  17.     while("TRUE")
  18.     {
  19.         printf("\nIntroduza um Numero entre 0 e 400: ");
  20.         fflush(stdin);  // Limpeza de Buffers
  21.         scanf("%d", &N);    // Input do Numero de anos
  22.  
  23.         if(N>400 || N<0)
  24.             printf("\n\tERRO\n\n"); // Validação de N entre 0 e 400
  25.  
  26.         else
  27.         {
  28.             anoM = N - 1 + ainicial; // Cálculo do Ano
  29.  
  30.             for(;ainicial<=anoM;ainicial++) // Ciclo Ano
  31.             {
  32.                 for(mes=1;mes<=12;mes++)    // ciclo Mes
  33.                 {
  34.                     if(mes == 4 || mes == 6 || mes == 9 || mes == 11)   // Meses 30
  35.                         diaMax = 30;   
  36.  
  37.                     if(mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)  // Meses 31
  38.                         diaMax = 31;   
  39.  
  40.                     if(mes == 2) // Mes Fevereiro
  41.                     {
  42.                         if( ainicial % 4 == 0 && ( ainicial % 100 != 0 || ainicial % 400 == 0 ) ) // Ano Bissexto, 29 dias
  43.                             diaMax = 29;   
  44.                         else
  45.                             diaMax = 28; // Ano Não-Bissexto, 28 dias
  46.                     }
  47.  
  48.                     for(dia=1;dia<=diaMax;dia++) // Ciclo do Dia
  49.                     {
  50.                         if(dia == 13)   // Se o dia for 13 fica junto com o dia de semana correspondente
  51.                         {
  52.                             switch(sem)
  53.                             {
  54.                             case 1: segunda++;break;
  55.                             case 2: terça++;break;
  56.                             case 3: quarta++;break;
  57.                             case 4: quinta++;break;
  58.                             case 5: sexta++;break;
  59.                             case 6: sabado++;break;
  60.                             case 7: domingo++;break;
  61.                             }
  62.                         }
  63.  
  64.                         sem++;  // Cálculo do dia de semana
  65.                         if(sem == 8)    // Se dia da semana for 8, volta a 1 (segunda feira)
  66.                             sem=1;
  67.  
  68.                     }
  69.                 }
  70.             }
  71.             printf("Sabados: %d \n Domingo: %d \n Segundas: %d \n Tercas: %d \n Quartas: %d \n Quintas: %d \n Sextas: %d \n \n\n\n", sabado,  domingo,segunda, terça, quarta, quinta, sexta);
  72.         }
  73.  
  74.         printf("\n\t Repetir? y/n ");
  75.         c= _getch();
  76.  
  77.         if(c != 'Y' || c != 'y')
  78.             break;
  79.     }
  80.     return 0;
  81. }
Add Comment
Please, Sign In to add comment