Langage C: écrire un programme en C
Nelson
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, à tous. Désolé du dérangement, j'aimerais s'il vous plaît avoir la correction en C de l'exercice suivant :
"Ecrire un algorithme qui demande un numéro de jour, de mois et d'année à l'utilisateur et renvoie s'il s'agit ou non d'une date valide."
J'ai essayé de faire la structure algorithmique et ensuite l'écrire en langage C mais, il ne se compile pas donc je suis totalement perdu. Serait-il possible d'avoir une correction d'ici demain, je vous en prie.
Merci d'avance à tous.
"Ecrire un algorithme qui demande un numéro de jour, de mois et d'année à l'utilisateur et renvoie s'il s'agit ou non d'une date valide."
J'ai essayé de faire la structure algorithmique et ensuite l'écrire en langage C mais, il ne se compile pas donc je suis totalement perdu. Serait-il possible d'avoir une correction d'ici demain, je vous en prie.
Merci d'avance à tous.
Configuration: Windows / Chrome 99.0.4844.74
A voir également:
- Langage C: écrire un programme en C
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
3 réponses
Bonjour
Il te suffit de mettre ton code ici et nous pourrons te corriger..
Utilise bien les balises pour poster le code.
Maintenant, il ne faut pas espérer que nous fassions tes devoirs à ta place.
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Il te suffit de mettre ton code ici et nous pourrons te corriger..
Utilise bien les balises pour poster le code.
Maintenant, il ne faut pas espérer que nous fassions tes devoirs à ta place.
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Quand j'ai un problème pas évident à résoudre, j'essaye de le décomposer en problèmes plus simples à résoudre, me permettant d'arriver au but.
If y a deux choses "difficiles" : déterminer le nombre de jours pour un mois et gérer le cas particulier des années bissextiles pour le mois de février. Pour les mois, un simple test de bornage de 1 à 12 suffit. Pour les années, si tu n'as pas d'exigences particulières, tu pourrais te contenter de ne rien vérifier, à moins que veuilles vérifier que la date fournie est bien une date à partir du 15 octobre 1582 (ton programme se base sur la répartition des douze mois du calendrier grégorien).
Alors, une façon de faire pourrait être :
If y a deux choses "difficiles" : déterminer le nombre de jours pour un mois et gérer le cas particulier des années bissextiles pour le mois de février. Pour les mois, un simple test de bornage de 1 à 12 suffit. Pour les années, si tu n'as pas d'exigences particulières, tu pourrais te contenter de ne rien vérifier, à moins que veuilles vérifier que la date fournie est bien une date à partir du 15 octobre 1582 (ton programme se base sur la répartition des douze mois du calendrier grégorien).
Alors, une façon de faire pourrait être :
- de commencer par écrire une fonction
int is_leap_year(int year);
qui retourne 0 (faux) si l'année n'est pas bissextile et 1 ou toute autre valeur (vrai) si elle l'est - une fois que cette fonction est testée, et au point, en second lieu, faire une fonction
int days_in_month(int month, int year);
qui retourne le nombre de jours dans un mois donné, cette fonction utilisantis_leap_year()
pour traiter le cas du mois de février - une fois que cette fonction est au point, écrire une fonction
int is_valid_date(int day, int month, int year);
et tester cette fonction devient facile
#include <stdio.h> int main() { int j,m,a,bissextile=0,date_valide=0; printf("saisir le jour: "); scanf("%d",&j); printf("saisir le mois: "); scanf("%d",&m); printf("saisir l'annee: "); scanf("%d",&a); if ((a %400 == 0)||((a%4==0)&&(a%100))) bissextile=1; if ((((m==1)||(m==3)||(m==5)||(m==7)||(m==8)||(m==10)||(m==12))&&((j>0)&&(j<=31)))||(((m==4)||(m==6)||(m==9)||(m==11))&&((j>0)&&(j<=30)))||((bissextile)&&(m==2)&&((j>0)&&(j<=28)))||((bissextile==0)&&(m==2)&&((j>0)&&(j<=27)))) date_valide=1; if (date_valide) printf("la date %d/%d/%d est une date valide.",j,m,a); else printf("la date %d/%d/%d n'est pas une date valide.",j,m,a); return 0; }
Bonjour jaouadi,
Il y a, au moins, deux erreurs dans ta ligne 15, qui est très longue et difficile à lire.
Si le mois est février, ce mois peut avoir 29 jours les années bissextiles et 28 jours les années non bissextiles.
La date 28-02-2021 est une date valide, mais ton code indique le contraire.
La date 29-02-2024 est une date valide, mais ton code indique le contraire.
Dal
Il y a, au moins, deux erreurs dans ta ligne 15, qui est très longue et difficile à lire.
Si le mois est février, ce mois peut avoir 29 jours les années bissextiles et 28 jours les années non bissextiles.
La date 28-02-2021 est une date valide, mais ton code indique le contraire.
La date 29-02-2024 est une date valide, mais ton code indique le contraire.
Dal