#include<stdio.h> // j'ai enlever conio.h (sur mon compilo j'en ai pas besoin) typedef struct { int jour; int mois; int annee; } date; void ajouteJour (date *date_struct) // Fonction qui ajoute un seul jour { if (date_struct->mois 12 && date_struct->jour 31) // Si on est le dernier jour de l'annee, { date_struct->annee++; // on change d'annee, date_struct->mois = 1; // et on passe au 1er janvier. date_struct->jour = 1; return; } if (date_struct->mois == 2) // Sinon, si on est en Février, { if ((date_struct->annee % 4) == 0) // lors d'une année bissextile, { if (date_struct->jour == 29) // et le 29 du mois, { date_struct->mois++; // on change de mois date_struct->jour = 1; // et on repasse au 1er du mois. return; } } else { if (date_struct->jour == 28) // sinon, c'est le 28 que { // s'effectue ce changement. date_struct->mois++; date_struct->jour = 1; return; } } date_struct->jour++; // Et si on est pas à la fin du mois, on change tout simplement de jour. return; } else if (date_struct->mois < 8) // Si c'est un autre mois mois, inferieur à Août, { if ((date_struct->mois % 2) == 1) // alors s'il est multiple de 2, { if (date_struct->jour == 31) // il a 31 jours, et si on est le 31ème, { date_struct->mois++; // on passe au mois suivant, date_struct->jour = 1; // et on remet le jour à 1. return; } } else { if (date_struct->jour == 30) // sinon, il a 30 jours, et si on est le 30ème { date_struct->mois++; // on passe au mois suivant, date_struct->jour = 1; // et on change de jour. return; } } date_struct->jour++; // Et si on est pas à la fin du mois, on change juste de jour. return; } else // Sinon, si le mois est supérieur ou égal à Août, c'est l'inverse : { if ((date_struct->mois % 2) == 0) // ceux qui sont multiple de 2 { if (date_struct->jour == 30) // ont 30 jours, { date_struct->mois++; date_struct->jour = 1; return; } } else { if (date_struct->jour == 31) // et les autres 31. { date_struct->mois++; date_struct->jour = 1; return; } } date_struct->jour++; return; } return; } void ajoutPlrsJours(date *date_struct, int nb_jours) // Ajoute plusieurs jours. { int i; for(i=0; i < nb_jours; i++) // ajoute un jour après l'autre. ajouteJour(date_struct); } int main () { date test_date; test_date.annee = 2011; test_date.mois = 12; test_date.jour = 28; printf("%02d/%02d/%04d\n", test_date.jour, test_date.mois, test_date.annee); ajoutPlrsJours(&test_date,5); printf("%02d/%02d/%04d\n", test_date.jour, test_date.mois, test_date.annee); return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question