Date et heure en langage C
Fermé
zakzaks
Messages postés
1
Date d'inscription
lundi 29 juin 2015
Statut
Membre
Dernière intervention
29 juin 2015
-
29 juin 2015 à 11:03
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 2 juil. 2015 à 10:53
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 2 juil. 2015 à 10:53
A voir également:
- Programme en c qui affiche la date
- Programme demarrage windows 10 - Guide
- Le clavier de mon telephone ne s'affiche plus - Guide
- Forcer la fermeture d'un programme - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
29 juin 2015 à 11:54
29 juin 2015 à 11:54
Bonjour,
On n'est pas là pour faire mais pour aider à faire.
Donc tu n'auras pas la solution toute faite.
Montre-nous plutôt ce que tu as commencé et dis-nous ce que tu n'arrives pas à faire.
Cdlt,
On n'est pas là pour faire mais pour aider à faire.
Donc tu n'auras pas la solution toute faite.
Montre-nous plutôt ce que tu as commencé et dis-nous ce que tu n'arrives pas à faire.
Cdlt,
YCN-
Messages postés
116
Date d'inscription
mercredi 24 juin 2015
Statut
Membre
Dernière intervention
13 juillet 2017
12
Modifié par YCN- le 29/06/2015 à 16:22
Modifié par YCN- le 29/06/2015 à 16:22
Bonjour,
Je crois que tout dépend de la façon dont tu donnes la date, mais admettons que tu stock la date dans un tableau T de 3 case de la forme T[0]=Jour T[1]=Mois T[2]=Année
int jour_suivant ( int T[] ) {
int i =0 ;
for (i=0;i<2;i++){
T[i]=T[i]+1;
}
return T[];
}
int jour_suivant(int T[]){
// à completer
}
int main (void) {
int T[3]; int Tplus [3]; int Tmoins[3]
int nb;
T[0]=29;
T[1]=06;
T[2]=2015;
Tplus[] = jour_suivant(T[]);
Tmoins[]=jour_precedent(T[]);
return 0;
}
Il ne te reste plus qu'à coder la fonction jour suivant, et ajouter les scanf nécessaire. Une amélioration possible serait d'utiliser des pointeurs, mais je suppose que tu n'en es pas encore là.
En espérant t'avoir aider,
PS : je n'ai pas compilé, il y a peut être de petites erreurs
Cordialement Yann CARDAILLAC
Je crois que tout dépend de la façon dont tu donnes la date, mais admettons que tu stock la date dans un tableau T de 3 case de la forme T[0]=Jour T[1]=Mois T[2]=Année
int jour_suivant ( int T[] ) {
int i =0 ;
for (i=0;i<2;i++){
T[i]=T[i]+1;
}
return T[];
}
int jour_suivant(int T[]){
// à completer
}
int main (void) {
int T[3]; int Tplus [3]; int Tmoins[3]
int nb;
T[0]=29;
T[1]=06;
T[2]=2015;
Tplus[] = jour_suivant(T[]);
Tmoins[]=jour_precedent(T[]);
return 0;
}
Il ne te reste plus qu'à coder la fonction jour suivant, et ajouter les scanf nécessaire. Une amélioration possible serait d'utiliser des pointeurs, mais je suppose que tu n'en es pas encore là.
En espérant t'avoir aider,
PS : je n'ai pas compilé, il y a peut être de petites erreurs
Cordialement Yann CARDAILLAC
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
29 juin 2015 à 16:41
29 juin 2015 à 16:41
Les pointeurs n'amélioreraient pas le programme puisque ce sont déjà des pointeurs que tu passes en paramétre et que dans le main(), le tableau est fixe et de petite taille.
Tplus[] = jour_suivant(T[]);
Pas bon en C.
return T[];
Pas bon non plus en C. D'autant que ta fonction renvoie un int. Vu la logique utilisée, pas besoin de return. Donc un simple void jour_suivant(int T[]); fera l'affaire.
Ensuite, ton programme ne tient pas compte de la partie qui pose souvent problème : en fin de mois, tu ne peux pas faire j+1, mais il faut incrémenter le mois. Mais si le mois vaut 12, c'est l'année qu'il faut incrémenter.
Note : pour les prochaines fois, n'oublie pas d'utiliser la balise <code c> pour ton code.
Exemple : <code c>ici tu mets ton code</code>
Cdlt,
Tplus[] = jour_suivant(T[]);
Pas bon en C.
return T[];
Pas bon non plus en C. D'autant que ta fonction renvoie un int. Vu la logique utilisée, pas besoin de return. Donc un simple void jour_suivant(int T[]); fera l'affaire.
Ensuite, ton programme ne tient pas compte de la partie qui pose souvent problème : en fin de mois, tu ne peux pas faire j+1, mais il faut incrémenter le mois. Mais si le mois vaut 12, c'est l'année qu'il faut incrémenter.
Note : pour les prochaines fois, n'oublie pas d'utiliser la balise <code c> pour ton code.
Exemple : <code c>ici tu mets ton code</code>
Cdlt,
YCN-
Messages postés
116
Date d'inscription
mercredi 24 juin 2015
Statut
Membre
Dernière intervention
13 juillet 2017
12
30 juin 2015 à 10:37
30 juin 2015 à 10:37
D'acc, oui oui c'était juste une espèce de brouillons que j'ai fait vite fait de façon à le débloquer ! L'histoire des pointeurs c'est simplement que ce serait plus propre je pense. J'avoue ne pas avoir pris le temps de me casser la tête pour que ce soit parfait, je voulais simplement l'aider un peu. Mais effectivement tu as tout à fait raison.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
1 juil. 2015 à 14:43
1 juil. 2015 à 14:43
Bonjour à tous,
La demande de zakzaks est tellement mal formulée, qu'on ne sait pas réellement quel est son besoin, car on peut interpréter son problème de multiples façons.
Obtenir le code de ce que zakzaks comme le demande fiddy est une façon d'éclairer notre lanterne ... à moins que zakzaks demande de l'aide pour un exercice et qu'il ou elle fasse entièrement fausse route, auquel cas, son code et l'énoncé précis de ce qu'on lui demande de faire seraient utiles.
Sinon, dans un monde réel, pour ajouter ou retrancher du temps à une date et heure et en afficher le résultat, on peut se servir des fonctions standard offertes par le C dans time.h.
http://www.cplusplus.com/reference/ctime/
en particulier mktime
Dal
La demande de zakzaks est tellement mal formulée, qu'on ne sait pas réellement quel est son besoin, car on peut interpréter son problème de multiples façons.
Obtenir le code de ce que zakzaks comme le demande fiddy est une façon d'éclairer notre lanterne ... à moins que zakzaks demande de l'aide pour un exercice et qu'il ou elle fasse entièrement fausse route, auquel cas, son code et l'énoncé précis de ce qu'on lui demande de faire seraient utiles.
Sinon, dans un monde réel, pour ajouter ou retrancher du temps à une date et heure et en afficher le résultat, on peut se servir des fonctions standard offertes par le C dans time.h.
http://www.cplusplus.com/reference/ctime/
en particulier mktime
Dal
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 juil. 2015 à 19:58
1 juil. 2015 à 19:58
Moi je vote pour la demande de résolution d'exo :-p.
zakzaks
>
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
2 juil. 2015 à 09:35
2 juil. 2015 à 09:35
Bonjour a tous
a propos de mon problème, j'avoue que je n'avais aucune idée de la façon a procéder mais j'ai trouvé quelque chose qui m'a aidé sauf que je n'ai pas du tout saisie ce que ça voulait dire surtout que j'ai un problème avec les pointeurs
Voila,
#include <stdio.h>
#include <time.h>
int jour(int j, int m, int a)
{
struct tm tm = {0, 0, 12, j, m - 1, a - 1900, 0, 0, 0};
time_t t = mktime(&tm);
return t < 0 ? 0 : localtime(&t)->tm_wday + 1;
}
int main(void)
{
const char *j[] = {"Echec","Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"};
printf("%s\n", j[jour(25, 12, 2012)]);
return 0;
}
J'ai donc utilisé cela en aboutisssant à:
#include <stdio.h>
#include <time.h>
int jour(int j, int m, int a)
{
struct tm tm = {0, 0, 12, j, m - 1, a - 1900, 0, 0, 0};
time_t t = mktime(&tm);
return t < 0 ? 0 : localtime(&t)->tm_wday + 1;
}
int main(void)
{
int a,b,c;
const char *j[] = {"Echec","Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"};
printf("taper une date JJ MM AAAA: ");
scanf("%2d%2d%4d",&a,&b,&c);
printf("nous somme le %02d/%02d/%4d\n",a,b,c);
printf("on est donc %s\n", j[jour(a, b, c)]);
a+=1;
printf("demain nous serons donc %s\n", j[jour(a, b, c)]);
a-=2;
printf("et hier nous etions donc %s\n", j[jour(a, b, c)]);
return 0;
}
merci
a propos de mon problème, j'avoue que je n'avais aucune idée de la façon a procéder mais j'ai trouvé quelque chose qui m'a aidé sauf que je n'ai pas du tout saisie ce que ça voulait dire surtout que j'ai un problème avec les pointeurs
Voila,
#include <stdio.h>
#include <time.h>
int jour(int j, int m, int a)
{
struct tm tm = {0, 0, 12, j, m - 1, a - 1900, 0, 0, 0};
time_t t = mktime(&tm);
return t < 0 ? 0 : localtime(&t)->tm_wday + 1;
}
int main(void)
{
const char *j[] = {"Echec","Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"};
printf("%s\n", j[jour(25, 12, 2012)]);
return 0;
}
J'ai donc utilisé cela en aboutisssant à:
#include <stdio.h>
#include <time.h>
int jour(int j, int m, int a)
{
struct tm tm = {0, 0, 12, j, m - 1, a - 1900, 0, 0, 0};
time_t t = mktime(&tm);
return t < 0 ? 0 : localtime(&t)->tm_wday + 1;
}
int main(void)
{
int a,b,c;
const char *j[] = {"Echec","Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"};
printf("taper une date JJ MM AAAA: ");
scanf("%2d%2d%4d",&a,&b,&c);
printf("nous somme le %02d/%02d/%4d\n",a,b,c);
printf("on est donc %s\n", j[jour(a, b, c)]);
a+=1;
printf("demain nous serons donc %s\n", j[jour(a, b, c)]);
a-=2;
printf("et hier nous etions donc %s\n", j[jour(a, b, c)]);
return 0;
}
merci