Advertisement
Guest User

Untitled

a guest
Aug 1st, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. void InitDateAjd(Date *pDateAjd, char *pdate){
  2. pDateAjd->Mois = ((*pdate)-48)*10 + (*(pdate+1)-48);
  3. pdate += 3;
  4. pDateAjd->Jour = ((*pdate)-48)*10 + (*(pdate+1)-48);
  5. pdate += 5;
  6. pDateAjd->Annee = ((*pdate)-48)*1000 + (*(pdate+1)-48)*100 + (*(pdate+2)-48)*10 + (*(pdate+3)-48);
  7. }
  8.  
  9. void LireDate(Date *pDate, Date dateLimite){
  10. short cpt, erreur = -1;
  11. char chaineDate[11];
  12.  
  13. while (erreur == -1){
  14. fflush(stdin);
  15. erreur = 0;
  16.  
  17. for(cpt=0 ; (chaineDate[cpt-1] != '\n' || cpt == 0) && cpt < 11 && erreur == 0; cpt++){
  18. chaineDate[cpt]=getchar();
  19.  
  20. if(cpt!=2 && cpt!=5 && cpt!=10 && (chaineDate[cpt] > '9' || chaineDate[cpt] < '0'))
  21. erreur = -1;
  22. else{
  23. if((cpt==2 || cpt==5)&&(chaineDate[cpt]!='/'))
  24. erreur = -1;
  25. }
  26. }
  27. if(erreur == 1 || chaineDate[cpt-1] != '\n'){
  28. printf("\tErreur d'encodage. Reessayez. \n") ;
  29. erreur = -1;
  30. }
  31. else{
  32. pDate->Jour = (chaineDate[0]-48)*10 + chaineDate[1]-48;
  33. pDate->Mois = (chaineDate[3]-48)*10 + chaineDate[4]-48;
  34. pDate->Annee = (chaineDate[6]-48)*1000 + (chaineDate[7]-48)*100 + (chaineDate[8]-48)*10 + chaineDate[9]-48;
  35.  
  36. erreur = ValiderDate(pDate);
  37. if(erreur != -1){
  38. erreur = LimiteDate(pDate, dateLimite);
  39. }
  40. if(erreur == -1)
  41. printf("\tErreur - Date invalide. Reessayez.\n ") ;
  42. else
  43. chaineDate[cpt] = '\0' ;
  44. }
  45. }
  46. }
  47.  
  48. short ValiderDate(Date *pDate){
  49. short erreur = 0;
  50.  
  51. if (pDate->Jour < 1 || pDate->Jour > 31 || pDate->Mois < 1 || pDate->Mois > 12)
  52. erreur = -1;
  53. else{
  54. switch(pDate->Jour){
  55. case 30 :
  56. if(pDate->Mois == 2)
  57. erreur = -1;
  58. break ;
  59. case 31 :
  60. if(pDate->Mois==2 || pDate->Mois==4 || pDate->Mois==6 || pDate->Mois==9 || pDate->Mois==11)
  61. erreur = -1 ;
  62. break ;
  63. case 29 :
  64. if(pDate->Mois==2 && ((pDate->Annee%4!=0) || ( (pDate->Annee%100==0) && (pDate->Annee%400!=0))))
  65. erreur = -1;
  66. break;
  67. }
  68. }
  69. return(erreur);
  70. }
  71.  
  72. short LimiteDate(Date *pDate, Date DateLim){
  73. short erreur = 0;
  74. if(pDate->Annee > DateLim.Annee){
  75. erreur = -1;
  76. }
  77. else{
  78. if(pDate->Mois > DateLim.Mois && pDate->Annee == DateLim.Annee)
  79. erreur = -1;
  80.  
  81. else{
  82. if(pDate->Jour > DateLim.Jour && pDate->Mois == DateLim.Mois && pDate->Annee == DateLim.Annee)
  83. erreur = -1;
  84. }
  85. }
  86. return erreur;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement