Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.90 KB | None | 0 0
  1. // Accesso alle librerie
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. // Dichiarazione funzioni
  6. int insert_data(int,int,int);
  7. int check_aaaa(int);
  8. int check_mm(int);
  9. int check_gg(int,int,int);
  10.  
  11. // Dichiarazione variabili globali
  12.  
  13. int main(void) {
  14.        
  15.     // Dichiarazione variabili locali
  16.     unsigned short gg, mm, aaaa;
  17.     unsigned short check = 0;
  18.    
  19.     printf("Inserire la data nell formato GG/MM/AAAA\n");
  20.    
  21.     //recupero il giorno
  22.     printf("Giorno: ");
  23.     scanf("%hd",&gg);
  24.     //recupero il mese
  25.     printf("Mese: ");
  26.     scanf("%hd",&mm);
  27.     //recupero l'anno
  28.     printf("Anno: ");
  29.     scanf("%hd",&aaaa);
  30.    
  31.     check = insert_data(aaaa,mm,gg);
  32.    
  33.     if(check != 1)
  34.         printf("Qualcosa è andato male...\n");
  35.     else
  36.         printf("Sei un boss ed hai quasi acquisito la padronanza delle funzioni\n");
  37. }
  38.  
  39. int insert_data(aaaa,mm,gg)
  40. {
  41.     // Dichiarazione variabili locali
  42.     unsigned short check = 0;
  43.    
  44.     // invochiamo il controllo dell'anno
  45.     check += check_aaaa(aaaa);
  46.    
  47.     // invochiamo il controllo del mese
  48.     check += check_mm(mm);
  49.        
  50.     // invochiamo il controllo del giorno
  51.     check += check_gg(aaaa,mm,gg);
  52.    
  53.     if(check != 3)
  54.         return 0;
  55.     else
  56.         return 1;
  57. }
  58.  
  59. int check_aaaa(int year)
  60. {
  61.     // Dichiarazione variabili locali
  62.            
  63.     if(year > 32767) // Valore massimo di un short unsigned
  64.             return 0;
  65.         else
  66.             return 1;
  67.  
  68. }
  69.  
  70. int check_mm(int month)
  71. {
  72.         if(month < 1 || month > 12)
  73.             return 0;
  74.         else
  75.             return 1;
  76. }
  77.  
  78. int check_gg(int year, int month, int day)
  79. {
  80.     // Dichiarazione variabili locali
  81.         unsigned giorni_dei_mesi[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  82.        
  83.  
  84.         if((((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) && (month == 2))
  85.                 if(day < 1 || day > 29)
  86.                       return 0;
  87.                 else
  88.                   return 1;
  89.  
  90.         else
  91.             if ((day < 1) || (day > giorni_dei_mesi[month]))
  92.                         return 0;
  93.                 else
  94.                     return 1;
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement