Se situer dans l'année si je dis le jour x

Résolu/Fermé
tof5962 Messages postés 21 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 23 mars 2010 - 27 nov. 2007 à 18:21
tof5962 Messages postés 21 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 23 mars 2010 - 28 nov. 2007 à 15:39
Bonjour,
ca va pas plaire peu etre a certain, mais j'ai besoin de vous donner l'ennoncé:

Etant donné un jour entier N inferieur ou egal a 365, déterminer a quel mois de l'année et a quel jour il correspond. l'année étant non bissextile. Un tableau mois donnera le nombre de jours de chaque mois.

biensur je ne vous demande pas le code, mais deja je ne trouve pas mon algo, je ne sais pas comment. mon utilisation est encore tres basique donc avant d'utiliser des methodes complexes, j'ai besoin de maitriser le plus simple.
il nia que la declaration du tableau qui peut me poser probleme au niveau syntaxe.
je rapel : il faut que je comprenne la solution, je n'ai pas besoin d'un copier coller sinon j'apprend rien

7 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
27 nov. 2007 à 18:30
voici une maniere de resoudre ton probleme a partir du nombre N tu cherche dans le tableau a quel mois ça correspond avec des if (ex: if (N>31 && N<59) c'est dans mois[1] soit fevrier) et ensuite pour trouver le jour tu fais des soustraction (ex: N=40 tu fais N-mois[0]) ce qui donne le 9 fevrier
voila a toi de faire ton code pour faire tout ça...
si tu as des probleme pour faire ton code tu peux le poster on corrigera tes erreurs en t'expliquant
0
tof5962 Messages postés 21 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 23 mars 2010
27 nov. 2007 à 18:49
effectivement si dans les methodes je pe incluer les tableaux.. je test ca et je tiens vous au courant
0
tof5962 Messages postés 21 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 23 mars 2010
27 nov. 2007 à 20:01
voici mon code, il est tres lourd et j'utilise 2 tableaux.
vous l'aurez remarquer comme moi, l'utilisation du tableau mois est inutile car j'aurais pu mettre des constantes, ca m'aurais allegé. mais c'est l'énnoncé.
Donc si vous avez des astuces pour alleger, faite m'en part et je voudrai savoir si un tableau a 2 dimentions (jamais vu) correspondais ici?


int m=0;// variable pour se situer dans le tableau		
int N;		 
int mois []= {31,28,31,30,31,30,31,31,30,31,30,31};
String nommois[]={"janvier","fevrier","mars","avril","mai","juin","juillet","aout","septembre","octobre","novembre","decembre"};
boolean faux=true;
do	{
	System.out.println("donnez le numero du jour");
	N=Lire.i();
		if (N<=0 || N>365) System.out.println("erreur");
		else faux=false;
	}
while(faux);

if (N<=31)	m=0;
if (N>31 && N<=59)	{
	m=1;
	N=N-mois[0];}
if (N>59 && N<=90) 	{
	m=2;
	N=N-(mois[0]+mois[1]);}
if (N>90 && N<=120)	{
	m=3;
	N=N-(mois[0]+mois[1]+mois[2]);}
if (N>120 && N<=151){
	m=4;
	N=N-(mois[0]+mois[1]+mois[2]+mois[3]);}
if (N>151 && N<=181){
	m=5;
	N=N-(mois[0]+mois[1]+mois[2]+mois[3]+mois[4]);}
if (N>181 && N<=212){
	m=6;
	N=N-(mois[0]+mois[1]+mois[2]+mois[3]+mois[4]+mois[5]);}
if (N>212 && N<=243){
	m=7;
	N=N-(mois[0]+mois[1]+mois[2]+mois[3]+mois[4]+mois[5]+mois[6]);}
if (N>243 && N<=273){
	m=8;
	N=N-(mois[0]+mois[1]+mois[2]+mois[3]+mois[4]+mois[5]+mois[6]+mois[7]);}
if (N>273 && N<=304){
	m=9;
	N=N-(mois[0]+mois[1]+mois[2]+mois[3]+mois[4]+mois[5]+mois[6]+mois[7]+mois[8]);}
if (N>304 && N<=334){
	m=10;
	N=N-(mois[0]+mois[1]+mois[2]+mois[3]+mois[4]+mois[5]+mois[6]+mois[7]+mois[8]+mois[9]);}
if (N>334) {
	m=11;
	N=N-(mois[0]+mois[1]+mois[2]+mois[3]+mois[4]+mois[5]+mois[6]+mois[7]+mois[8]+mois[9]+mois[10]);}

System.out.println(+N+" "+nommois[m]);
	}
}
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
27 nov. 2007 à 23:24
c'est en quel language que tu doit le faire ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tof5962 Messages postés 21 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 23 mars 2010
28 nov. 2007 à 11:41
c'est du java, et j'utilise eclipse
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
28 nov. 2007 à 14:56
C'est pas mal du tout ton programme !
Je pense avoir une astuce, au lieu d'avoir le nombre de jour du mois, met le premier jour où il commence.
mois[]={0,31,59,90,120...,365}; (je met 13 valeur)
Ce qui permet alors de faire simplement une boucle :
for (i allant de 0 à 12 exclu)
if(N>mois[i]&N<mois[i+1]){ m=i;break;} else continue;
ainsi, lorsque i vaut 11, grace à la 13ème valeur mois[i+1]==mois[12] ne renvois pas d'erreur
ensuite pour avoir le numero du mois :
N-mois[m];
Tu doit pouvoir déclarer un tableau à 2 dim en fesant par exmple :
int j[3][5];
J'espère que ça t'aidera.
0
tof5962 Messages postés 21 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 23 mars 2010
28 nov. 2007 à 15:39
j'y avais pensé au tableau {31,59,90...} mais ca me fait hors sujet par raport a l'ennoncé. a mon avis c'est un exos pour m'apprendre a manipuler tout ca.merci a vous deux, je vais chercher sur le net comment fonctionne un tableau double dimention car je suis perdu. le programme fonctionnant tres bien, je mets ce sujet resolu.
0