Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void InitDateAjd(Date *pDateAjd, char *pdate){
- pDateAjd->Mois = ((*pdate)-48)*10 + (*(pdate+1)-48);
- pdate += 3;
- pDateAjd->Jour = ((*pdate)-48)*10 + (*(pdate+1)-48);
- pdate += 5;
- pDateAjd->Annee = ((*pdate)-48)*1000 + (*(pdate+1)-48)*100 + (*(pdate+2)-48)*10 + (*(pdate+3)-48);
- }
- void LireDate(Date *pDate, Date dateLimite){
- short cpt, erreur = -1;
- char chaineDate[11];
- while (erreur == -1){
- fflush(stdin);
- erreur = 0;
- for(cpt=0 ; (chaineDate[cpt-1] != '\n' || cpt == 0) && cpt < 11 && erreur == 0; cpt++){
- chaineDate[cpt]=getchar();
- if(cpt!=2 && cpt!=5 && cpt!=10 && (chaineDate[cpt] > '9' || chaineDate[cpt] < '0'))
- erreur = -1;
- else{
- if((cpt==2 || cpt==5)&&(chaineDate[cpt]!='/'))
- erreur = -1;
- }
- }
- if(erreur == 1 || chaineDate[cpt-1] != '\n'){
- printf("\tErreur d'encodage. Reessayez. \n") ;
- erreur = -1;
- }
- else{
- pDate->Jour = (chaineDate[0]-48)*10 + chaineDate[1]-48;
- pDate->Mois = (chaineDate[3]-48)*10 + chaineDate[4]-48;
- pDate->Annee = (chaineDate[6]-48)*1000 + (chaineDate[7]-48)*100 + (chaineDate[8]-48)*10 + chaineDate[9]-48;
- erreur = ValiderDate(pDate);
- if(erreur != -1){
- erreur = LimiteDate(pDate, dateLimite);
- }
- if(erreur == -1)
- printf("\tErreur - Date invalide. Reessayez.\n ") ;
- else
- chaineDate[cpt] = '\0' ;
- }
- }
- }
- short ValiderDate(Date *pDate){
- short erreur = 0;
- if (pDate->Jour < 1 || pDate->Jour > 31 || pDate->Mois < 1 || pDate->Mois > 12)
- erreur = -1;
- else{
- switch(pDate->Jour){
- case 30 :
- if(pDate->Mois == 2)
- erreur = -1;
- break ;
- case 31 :
- if(pDate->Mois==2 || pDate->Mois==4 || pDate->Mois==6 || pDate->Mois==9 || pDate->Mois==11)
- erreur = -1 ;
- break ;
- case 29 :
- if(pDate->Mois==2 && ((pDate->Annee%4!=0) || ( (pDate->Annee%100==0) && (pDate->Annee%400!=0))))
- erreur = -1;
- break;
- }
- }
- return(erreur);
- }
- short LimiteDate(Date *pDate, Date DateLim){
- short erreur = 0;
- if(pDate->Annee > DateLim.Annee){
- erreur = -1;
- }
- else{
- if(pDate->Mois > DateLim.Mois && pDate->Annee == DateLim.Annee)
- erreur = -1;
- else{
- if(pDate->Jour > DateLim.Jour && pDate->Mois == DateLim.Mois && pDate->Annee == DateLim.Annee)
- erreur = -1;
- }
- }
- return erreur;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement