Langage c

Fermé
delavega470 Messages postés 298 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 - 22 avril 2014 à 10:39
Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 - 22 avril 2014 à 13:25
Bonjour à tous,

j'ai un petit souci avec un exercice de langage c que je voulais partager avec vous , je veux un coup de main je suis un début en langage c je travail avec codeblocks j'ai pris cet exercice sur le net mais je fais ça ne passe pas aider moi svp!!!!!!!!

EXERCICE
Le nombre de jours dans un mois peut varier entre les valeurs 28,29, 30,31 suivant l'année. Les mois de janvier, mars, mai, juillet, août, octobre et décembre sont des mois de 31 jours. Les mois d'avril, juin, septembre et novembre sont des mois de 30 jours. Seul le mois de février est particulier, puisque son nombre est de 29 pour les années bissextile et de 28 dans le cas contraire.
Une année est bissextile tous les 4 ans, sauf lorsque le millésime est divisible par 100 et non par 400 en d'autre terme pour que une année soit bissextile, il suffit que l'année soit un nombre divisible par 4 et non par 100 ou alors par 400. Dans tous les cas l'année n'est pas bissextile.
Ecrire un programme qui demande de saisir au clavier le numéro du mois ainsi que l'année puis qui affiche les nombres de jour de ce mois.
A l'exécution on devra avoir :
Exécution 1
De quel mois s'agit-il ? : 5
De quelle année ? : 1999
En 199 le mois N° 5 a 31 jours
Exécution 2
De quel mois s'agit-il ? : 15
De quelle année ? : 2000
Impossible ce mois n'existe pas.

voila le langage que je fait :


#include <stdio.h>
#include <stdlib.h>
int nbrem,nbrea;
int main()
{
printf("--------------TROUVER LA STRUCTURE D'UNE ANNEE----\n");
printf("---------------------------------------------------\n");
printf("de quel mois s'agit il ?:");
scanf("%i",&nbrem);
printf("de quelle annee s'agit il ? :");
scanf("%i",&nbrea);
switch (nbrem)
{


case 1 : printf ("En %i" ,nbrea,"le mois N°1 a 31 jours \n");break;
case 2 : printf ("En %i",nbrea,"le mois N°2 a 29 jours \n");break;
case 3 : printf ("En %i",nbrea,"le mois N°3 a 31 jours \n");break;
case 4 : printf ("En %i",nbrea," le mois N°4 a 30 jours \n");break;
case 5 : printf ("En %i",nbrea," le mois N°5 a 31 jours \n");break;
case 6 : printf ("En %i",nbrea," le mois N°6 a 30 jours \n");break;
case 7 : printf ("En %i",nbrea," le mois N°7 a 31 jours \n");break;
case 8 : printf ("En %i",nbrea," le mois N°8 a 31 jours \n");break;
case 9 : printf ("En %i",nbrea,"le mois N°9 a 30 jours \n");break;
case 10 : printf ("En %i",nbrea," le mois N°10 a 31 jours \n");break;
case 11 : printf ("En %i",nbrea,"le mois N°11 a 30 jours \n");break;
case 12 : printf ("En %i",nbrea,"le mois N°12 a 31 jours \n");break;
default : printf(" ce mois n'existe pas \n");break;
}


return 0;
}


Merci de bien vouloir m'aider!
A voir également:

2 réponses

Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 1 121
Modifié par Franck7511 le 22/04/2014 à 12:33
Salut,

Evite ces variables globales, et pour le cas février, tu ne fais rien là ;)
Il faudrait que tu distingue le cas bissextile/non bissextile dans le "case 2"
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
22 avril 2014 à 12:34
Salut delavega470,

Ton main devrait avoir un prototype
int main(void)
, puisque tu n'utilises pas d'arguments.

Ton intitulé est bizarre, mais c'est toi qui vois.

Ton scanf (et printf) devrait utiliser le spécificateur %d au lieu de %i, sauf si tu veux permettre la saisie en octal.

La syntaxe de tes printf est erronée. Tu dois écrire quelque chose du type :
printf ("En %d le mois N°1 a 31 jours \n", nbrea);
.

Tu ne traites pas le cas de Février. Utilise l'opérateur modulo : % pour vérifier si un nombre est divisible par un autre.


Dal
0
Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 1 121
Modifié par Franck7511 le 22/04/2014 à 13:25
En fait, faudrait un :
if((nbrea % 4 == 0) || (nbrea % 400 == 0) && !(nbrea % 100 == 0))
printf("Le mois N°%d a 29 jours \n", nbrem); // Cas bissextile
else 
printf("Le mois N°%d a 28 jours \n", nbrem);
0