Besoin d'aide à résoudre un problème dans mon code

Résolu/Fermé
Demonaz84 Messages postés 12 Date d'inscription samedi 10 septembre 2016 Statut Membre Dernière intervention 5 décembre 2016 - Modifié par baladur13 le 10/09/2016 à 22:01
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 11 sept. 2016 à 10:14
Bonjour,

mon professeur m'a demandé de créer un programme qui va nommer la date que l'utilisateur entre au clavier, tout en nommant le mois et en disant si la date est une date valide en considérant les années bissextiles.

mon code semble marcher mais par contre il lui manque un je ne sais quoi pour arrêter de dire que , par exemple, le 29 février 2001 est une date valide, car ce ne l'est pas, en lisant mon code qui n'affiche pas d'erreur dans visual studio, je ne comprend pas pourquoi ça ne marche pas

est-ce que quelqun pourrait sil-vous-plaît me dire qu'elle est la raison que ça ne marche pas parfaitement ? ( SVP utiliser le même type de code que moi, je vois sur google que tout le monde code d'une façon qui est différent à celle que j'apprend au cégep, et ça me rend des plus confus )

merci beaucoup, voici le code de mon programme = ( cette fenetre etant moins large que vidual studio, le retour a la ligne porte a confusion... )


// But : Écrivez un programme qui demande à l’utilisateur d’entrer 3 nombres entiers. Chaque nombre représentera respectivement : une année, un mois et un jour.
// Auteur : Eric Desjardins
// Date : 8 septembre 2016

#include <iostream>

int main()
{

 // On s'assure que la langue est la bonne
 setlocale(LC_ALL, "");

 // On déclare les variables
 int iAnnée;
 int iMois;
 int iJour;
 bool bAnnée;

 // On demande à l'utilisateur d'entrer les données
 std::cout << "Veuillez entrer une année, un mois et un jour (séparés par des espaces) :\n";

 // On garde en mémoire les données entrées
 std::cin >> iAnnée >> iMois >> iJour;

 // On vérifie si le mois est valide
 if (iMois > 12)
 {
  std::cout << "Le mois entré n'est pas valide\n";
 }
 if (iMois < 1)
 {
  std::cout << "Le mois entré n'est pas valide\n";
 }
 else
  // On nomme le mois dans la date
  switch (iMois)
  {
  case 1:
   std::cout << iJour << " " << "Janvier" << " " << iAnnée << "\n";
   break;
  case 2:
   std::cout << iJour << " " << "Février" << " " << iAnnée << "\n";
   break;
  case 3:
   std::cout << iJour << " " << "Mars" << " " << iAnnée << "\n";
   break;
  case 4:
   std::cout << iJour << " " << "Avril" << " " << iAnnée << "\n";
   break;
  case 5:
   std::cout << iJour << " " << "Mai" << " " << iAnnée << "\n";
   break;
  case 6:
   std::cout << iJour << " " << "Juin" << " " << iAnnée << "\n";
   break;
  case 7:
   std::cout << iJour << " " << "Juillet" << " " << iAnnée << "\n";
   break;
  case 8:
   std::cout << iJour << " " << "Août" << " " << iAnnée << "\n";
   break;
  case 9:
   std::cout << iJour << " " << "Septembre" << " " << iAnnée << "\n";
   break;
  case 10:
   std::cout << iJour << " " << "Octobre" << " " << iAnnée << "\n";
   break;
  case 11:
   std::cout << iJour << " " << "Novembre" << " " << iAnnée << "\n";
   break;
  case 12:
   std::cout << iJour << " " << "Décembre" << " " << iAnnée << "\n";
   break;

  }


 // On vérifie si le jour est valide
 if (iMois == 1 && iJour > 31 || iJour < 1)
  {
   std::cout << "Le jour n'est pas valide\n";
  }
 if (iMois == 3 && iJour > 31 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 4 && iJour > 30 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 5 && iJour > 31 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 6 && iJour > 30 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 7 && iJour > 31 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 8 && iJour > 31 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 9 && iJour > 30 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 10 && iJour > 31 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 11 && iJour > 30 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 if (iMois == 12 && iJour > 31 || iJour < 1)
 {
  std::cout << "Le jour n'est pas valide\n";
 }
 
 bAnnée = true;
 if (iMois == 2 && (iAnnée % 4 == 0) && (iAnnée % 100 == 0) && (iAnnée % 400 == 0));
 else
 bAnnée = false;

 if (iMois == 2)
  if (bAnnée = true)
   if (iJour > 29 || iJour < 1 )
   {
    std::cout << "Le jour n'est pas valide\n";
   }
 
 if (iMois == 2)
  if (bAnnée = false)
   if (iJour >28 || iJour <1 )
   {
    std::cout << "Le jour n'est pas valide\n";
   }




 // On demande au système de faire une pause afin de lire l'information
 system("pause");

 // On s'assure qu'il n'y a pas d'erreurs
 return 0;

}



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
10 sept. 2016 à 23:06
Rapidement sans aller plus loin :
if (iMois == 2 && (iAnnée % 4 == 0) && (iAnnée % 100 == 0) && (iAnnée % 400 == 0));

Il y a un ; à la fin de ton if.
0
Demonaz84 Messages postés 12 Date d'inscription samedi 10 septembre 2016 Statut Membre Dernière intervention 5 décembre 2016
11 sept. 2016 à 02:40
merci de la reponse, par contre ça mettait mon else souligné en rouge disant erreur

j'ai fini par trouver apres des heures de cassage de tete que mon erreur etait que javais juste mit = au lieu de == dans cette section :

bAnnée = true;
if (iMois == 2 && (iAnnée % 4 == 0) && (iAnnée % 100 == 0) && (iAnnée % 400 == 0));
else
bAnnée = false;


donc j'ai mit == aux deux endroits et mon programme marche enfin !

merci beaucoup tout de même c'est fortement apprécié !

à la prochaine gens du forum !
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
11 sept. 2016 à 10:14
bAnnée = true;
if (iMois == 2 && (iAnnée % 4 == 0) && (iAnnée % 100 == 0) && (iAnnée % 400 == 0));
else
bAnnée = false;

Peut être remplacé par :
bAnnée = iMois == 2 && (iAnnée % 4 == 0) && (iAnnée % 100 == 0) && (iAnnée % 400 == 0);
0