Varible toujours égale à O

Résolu/Fermé
Carnat89 Messages postés 14 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 6 mai 2014 - 7 oct. 2008 à 20:52
Carnat89 Messages postés 14 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 6 mai 2014 - 8 oct. 2008 à 06:09
Bonjour,

voila j'ai un petit problème. Je dois crée un programme pour calculer le nombre qu'il y a entre deux dates.

Seul petit problème, ma variable "Nombre" reste toujours égale à 0 ! !

Pour info la variable Nombre est traitée dans la boucle FOR à la ligne 28.

J'ai du mal à comprendre pourquoi cette variable reste égale 0.

Je vous donne le problème :

#include <iostream>
using namespace std;

main()
{
int Date1,Date2,Jour1,Jour2,Mois1,Mois2,Annee,Jour,JPM[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int Resultat;
int i;
int Nombre=0;

cout<<"Entrez la premiere date format JJMMAA : ";
cin>>Date1;

cout<<"Entrez la deuxieme date format JJMMAA : ";
cin>>Date2;

Jour1=(Date1/10000); //on isole le jour de la première date
Mois1=((Date1-10000*Jour1)/100); //on isole le mois de la premiere date
Annee=(2000+Date1-(Date1/100)*100); //on isole l'année de la première date qui est la même que la deuxième date
printf("Jour1=%d Mois1=%d Annee=%d\n",Jour1,Mois1,Annee);
Jour2=(Date2/10000); //on isole le jour de la deuxième date
Mois2=((Date2-10000*Jour2)/100); //on isole le mois de la deuxième date
printf("Jour2=%d Mois2=%d\n",Jour2,Mois2);
Jour=(JPM[Mois1]-Jour1);

for (i=Mois1;i==Mois2-2;i++)
{
Nombre+=JPM[i];
}

while (i==(Mois2-2));
printf("Nombre=%d\n",Nombre);
Resultat=(Jour+Nombre+Jour2);

printf("Il y a %d jour(s) de difference entre ces deux dates\n",Resultat);
}


Merci d'avance

4 réponses

une boucle for termine lorsque le test est faux. Dans ton cas si Mois1 n'est pas egal a mois2 -2 alors il quitte la boucle. Ce n'est pas le bon test. A toi de trouver, car j'ai l'impression de faire un projet a la place de quelqu'un.... (verifie un peu tout, il y a quelques failles dans ton algo)
0
Carnat89 Messages postés 14 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 6 mai 2014 2
7 oct. 2008 à 22:38
je ne comprend pas...Le test n'est pas de savoir quand Mois1 est égal à Mois2-2 mais quand i est égal à Mois2-2.

cependant "une boucle for termine lorsque le test est faux", je ne savais pas. Je verrai tout ça demain, assez de prise de tête pour ce soir.

P.S. : Je précise que le but de ma démarche n'est pas de trouver quelqu'un pour faire ce projet à ma place mais bien de demander de l'aide. Et pour ça, merci mc.
0
En effet ce test ne doit pas etre de tester si mois1 = mois2 -2, mais dans ce code, c'est ce qu'il se passe.
Lorsque l'on rentre dans le for la premiere fois, le test est realisé. Comme le test de ton code est "i==Mois2-2", si cette expression est fausse, le boucle est directement zappée. Si c'est le contraire, alors on effectue la somme (nombre += etc.). Le tour suivant, i est incrémenté donc l'égalité n'est plus juste, et donc la boucle est finie. Au mieux on n'exécute le corps de cette boucle une seule et unique fois, et ce que lorsque mois1 == mois2 - 2.

Petite remarque : t'as un while qui traine qui ne sert a rien apres le for
0
Carnat89 Messages postés 14 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 6 mai 2014 2
8 oct. 2008 à 06:09
Ok, ça marche, mon test n'était pas approprié maintenant c'est bon :-) Merci encore mc.
0