Accueil > Forum > > > > Structure date c
Structure date c
vendredi 11 novembre 2011 à 12:44:19 |
Structure date c

hamriham123
|
<<
on considère la structure date definie comme suite :
typedef struct date
{ int jours;
int mois;
int année;
} date;
écrire une fonction qui ajoute un nombre n de jours à une date
exemple : 20+ 15/10/2011 = 04/11/2011.>>
le nombre de jours etant quelconque .
Merci de bien vouloir m'aider .
|
|
vendredi 11 novembre 2011 à 13:30:29 |
Re : Structure date c

pop70
|
Salut,
qu'est-ce qui te pose problème précisément ? La façon d'écrire la fonction ou le calcul ?
Est-ce que tu as déjà écris un morceau de ce code ?
Pop70
|
|
vendredi 11 novembre 2011 à 16:13:29 |
Re : Structure date c

hamriham123
|
En fait j'arrive pas a commencer mon programme ! Ce qui me pose probleme evidemment c'est le fait qu'il ai des mois a 28, 29, 30 et 31 jours .
J'ai eu de la part d'un prof ceci :
" #include<stdio.h>
#include<conio.h>
typedef struct
{
int jour,mois,annee;
} date;
void main()
{
clrscr();
date d;
int j,total;
do
{
printf("Entrez le nombre de jours à ajouter <=30");
scanf("%d",&j);
}while(j>30);
printf("Entrez la date");
scanf("%d %d %d",&d.jour,&d.mois,&d.annee);
total=j+d.jour;
if((total<=29 && d.mois==2)||(total<=30 &&(d.mois==4||d.mois==6||d.mois==9||d.mois==11))||(total<=31))
{
printf("La date résultant est=%d %d %d",total,d.mois,d.annee);
}
else
{
if(d.mois==2)
{
printf("La date résultant est=%d %d %d",total-29,d.mois+1,d.annee);
}
else if(d.mois==4||d.mois==6||d.mois==9||d.mois==11)
{
printf("La date résultant est=%d %d %d",total-30,d.mois+1,d.annee);
}
else
{
printf("La date résultant est=%d %d %d",total-30,d.mois+1,d.annee);
}
}
getch();
}
>>
Mais je ne sais pas comment passer de n<30 à n quelconque !
sinon mon prof nous a parlé d'une autre méthode qui consiste à je cite : (n'ajouter qu'un jour au début et puis généraliser pour n jours) personnellement j'ai pas vraiment compris ce qu'il voulait dire par là mais si ça te dit quelque chose fait le moi savoir .
|
|
vendredi 11 novembre 2011 à 19:44:43 |
Re : Structure date c

pop70
|
Ajouter un jour puis généraliser, ça veut dire : faire la fonction qui ajoute un seul jour, puis l'appeler n fois, dans une autre fonction qui a pour but d'ajouter n jours :
Code C/C++ : #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;
}
L'algo est simple, c'est comme avec les bosses des mains  : bosse->31 jours, creux->30 jours. Il en ressort un motif de 1 sur 2 qui a 30 jour, sauf en Août qui lui a 31 jours aussi.
Pour Février je le traite à part, si l'année est bissextile -> 29 jours, sinon 28 (d'où modulo 4).
C++dialement,
Pop70
|
|
vendredi 11 novembre 2011 à 19:47:24 |
Re : Structure date c

pop70
|
(Dsl pour les fautes (enlevé, multiples...) je clique toujours sur "Envoyer" sans relire...
Pop70
|
|
samedi 12 novembre 2011 à 11:02:42 |
Re : Structure date c
|
lundi 14 novembre 2011 à 09:24:25 |
Re : Structure date c

buno
|
Hello,
@hamriham123: je te conseille de mettre le nom de Pop70 sur ton compte-rendu de TP...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
vendredi 18 novembre 2011 à 16:14:27 |
Re : Structure date c

katsankat
|
Salut, le code me semble un peu long.
Surtout qu'en corrigeant les copies, les profs vérifient rapidement d'ou provient un code, eux aussi ont internet! (je forme des programmeurs en tant que prof...) et cppfrance plutôt bien référencé par google. Bref...
Je ferais autrement (va savoir la note?) : transformer la date donnée en timestamp UNIX (nombre de secondes écoulées depuis le 1er janvier 1970) il y a certainement une fonction de la LibC qui fait ça; puis ajouter le nombre de secondes correspondant à 20 jours, pour retransformer ce nouveau timestamp en jour, mois, an à partir du pointeur de la structure passé en argument de la fonction.
Anecdote, l'histoire du 1er janvier 70 produira une panique similaire au passage en l'an 2000 puisque le timestamp UNIX est stocké sur un int, dont la capacité est limitée à 4 milliards de seconde, ce qui entrainera un dépassement de capacité de cette variable en 2038.
|
|
mercredi 23 novembre 2011 à 01:45:49 |
Re : Structure date c

hamriham123
|
En fait, j'avais pas demandé à POP70 de me passer le code en entier mais juste, m'expliquer ce que notre prof voulait qu'on fasse ; "Ajouter un jour puis généraliser, ça veut dire : faire la fonction qui ajoute un seul jour, puis l'appeler n fois, dans une autre fonction qui a pour but d'ajouter n jours : " aurait suffit mais monsieur s'est pris la peine d'écrire le programme et me le passer(En plus c'est meme pas un TP qu'on a, je bloque dessus c'est tout)!
Vous en faites tout un plat !
|
|
mercredi 23 novembre 2011 à 02:00:53 |
Re : Structure date c
|
Cette discussion est classée dans : date, structure
Répondre à ce message
Sujets en rapport avec ce message
structure de données?? [ par debutant0c ]
Salut, Je dois écrire un programme EN C qui permet de placer n taches sur m machines tel que une fois une tache terminée placer la tache suivante sur
Comment imprimer une structure à l'aide d'un pointeur?? [ par IHECinformaticien ]
Bonjour, j'ai définit une structure date contenant 3 champs de type entier pour identifier le jour, le mois & l'année. Ensuite j'ai initialisé une var
Un problème avec les structures en C ??!! [ par IHECinformaticien ]
Bonsoir/Bonjour, dans le code source qui suit, j'ai défini un tableau de type structure date( une structure qui contient le jour, le mois et l'année),
Créer un raccourci (DEV-C++) [ par ndubien ]
Bonjour, Cela fait un moment que je cherche une fonction permettant de créer un raccourci. Je l'ai trouvé mais impossible de la compiler sous DEV-C++:
suppression de fichier en fonction de la date de création [ par koma777 ]
Bonjour à tous, Je cherche actuellement un programme automatisant la suppression de fichier en fonction d'une date antérieur. En effet, j'ai une camer
fonctions de listes chainees en c [ par loftiteau ]
bonjourje souhaite avoir d'aide pour faire des fonctions d'ajout et suppression et modification en utilisant la liste chainé suivante en language c :s
Incruster heure et date dans une image [ par deck_bsd ]
Yop à tous,Voila, j'aurai voulu savoir comment je pourrai faire pour incruster l'heure et la date dans une image, de la même manière que fais un apare
structure de la trame GPS [ par loik250 ]
je voulais avoir qcq documentation sur la structure de la trame GPS . Merci d'avance
Manipulation de date [ par alphaone ]
Bonjour, j'ai fait une fonction pour copier la date d'un fichier vers un autre:[code]/** \brief change file time with system time\param file File name
Afficher heure [ par maxlog ]
Bonjour, J'aimerais savoir comment afficher l'heure de mon serveur (mon Ordi) avec la commande 'date'... J'ai affiché la date mais je voudrais mainten
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|