IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Date (Structure de données)


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut Date (Structure de données)
    Bonjour,

    Voici les consignes des fonctions à créer :

    http://img15.hostingpics.net/pics/510428Date.jpg

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    	public class Date {
    		public int jour;
    		public int mois;
    		public int annee;
    	}
     
    	static boolean precede(Date d1, Date d2) {
    		if (d1.annee < d2.annee) {
    			return true;
    		} else if (d1.annee == d2.annee && d1.mois < d2.mois) {
    			return true;
    			} else if (d1.annee == d2.annee && d1.mois == d2.mois) {
    				if (d1.jour < d2.jour) {
    					return true;
    			} else {
    				return false;
    			}
    		}
    		return false;
    	}
     
    	static boolean estBissextile(Date d) {
    		return (d.annee%4 == 0 && (d.annee%100 != 0 || d.annee%400 == 0));
    	}
     
    	static int nombreDeDates(Date[] t, Date min, Date max) {
     
    		int nbDates = 0;
    		Date tempD;
    		for (int i = 0; i < t.length; i++) {
    			tempD = t[i];
    			if (precede(min,tempD) && precede(tempD,max)) {
    				nbDates += 1;
    			}
    		}
    		return nbDates;
    	}
     
    	static Date ajouteJours(Date d,int n) {
    		//je bloque
    	}
    J'aimerais savoir si mon code est correct svp ? La dernière question est un peu plus dure... quelqu'un pourrait m'aider svp ?

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Utilise la classe Calendar.

    A+.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    Utilise la classe Calendar.

    A+.
    Merci mais ça ne m'avance pas plus que ça... Je dois créer les fonctions qu'ils demandent et non utiliser une class toute faite.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Patata3 Voir le message
    Merci mais ça ne m'avance pas plus que ça... Je dois créer les fonctions qu'ils demandent et non utiliser une class toute faite.
    Ça devrait pourtant t'avancer, la classe Calendar permet de manipuler des dates... c'est juste qu'il te laisse chercher un peu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ça devrait pourtant t'avancer, la classe Calendar permet de manipuler des dates... c'est juste qu'il te laisse chercher un peu.
    Oui c'est vrai que ça me permet de tester mes fonctions mais c'est surtout pour la dernière fonction que j'aimerais savoir comment faire.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(maDate);
    calendar.add(Calendar.DATE, 2);   <---- on ajoute 2 jours ici
    Date maNouvelleDate = calendar.getTime();
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(maDate);
    calendar.add(Calendar.DATE, 2);   <---- on ajoute 2 jours ici
    Date maNouvelleDate = calendar.getTime();
    Non mais je sais ça qu'on peut utiliser cette fonction mais moi je cherche à la créer justement !


  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Patata3 Voir le message
    Non mais je sais ça qu'on peut utiliser cette fonction mais moi je cherche à la créer justement !
    Je ne pouvais pas le rêver puisqu'il n'y avait plus la pièce jointe au moment où j'ai regardé

    Si c'est l'algorithme que tu cherches, je suppose qu'il sera toujours plus facile de convertir ta date en paramètre en numéro de jour dans l'année, ajouter les jours, et reconvertir ton numéro de jour dans l'année en date...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Je ne pouvais pas le rêver puisqu'il n'y avait plus la pièce jointe au moment où j'ai regardé

    Si c'est l'algorithme que tu cherches, je suppose qu'il sera toujours plus facile de convertir ta date en paramètre en numéro de jour dans l'année, ajouter les jours, et reconvertir ton numéro de jour dans l'année en date...
    Ok. Ou sinon je peux aussi créer une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    	  public static int nombreJoursDuMois(int mois, Date annee) {
    		    switch (mois) {
    		  /* Dans le cas des mois a 31 jours                           */
    		      case  1 :
    		      case  3 :
    		      case  5 :
    		      case  7 :
    		      case  8 :
    		      case 10 :
    		      case 12 : return(31);
    		  /* Dans le cas des mois a 30 jours                           */
    		      case  4 :
    		      case  6 :
    		      case  9 :
    		      case 11 : return(30);
    		  /* Dans le cas du mois de fevrier                            */
    		      case  2 : if ( estBissextile(annee) )
    		                  return(29);
    		                  else
    		                  return(28); }
    		  }
    Et après je fais une boucle dans la fonction ajouteJours ?

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Convertir une date en numéro de jour dans l'année (et inversement) me paraît plus simple mais c'est à toi de voir...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Convertir une date en numéro de jour dans l'année (et inversement) me paraît plus simple mais c'est à toi de voir...
    Oui c'est vrai mais ça fait beaucoup de conditionnelles ça, non ? Et dans l'énoncé ils disent "Pour réaliser cet exercice, utilisez une approche itérative qui va déduire successivement des jours à n et incrémenter les mois de d."

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Patata3 Voir le message
    Oui c'est vrai mais ça fait beaucoup de conditionnelles ça, non ?
    Pas spécialement si on s'y prend bien... Mais ça peut être un peu compliqué quand même.

    Citation Envoyé par Patata3 Voir le message
    Et dans l'énoncé ils disent "Pour réaliser cet exercice, utilisez une approche itérative qui va déduire successivement des jours à n et incrémenter les mois de d."
    Ah bah il faut faire ce que dit l'énoncé bien sûr. Mais bon, tu perds rien à essayer d'autres méthodes à côté.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    C'est bon, j'ai réussi en faisant itérativement, par contre sans la fonction qui calcule le nombre de jours d'un mois c'est impossible, ils auraient pu nous l'indiquer dans l'énoncé... à moins qu'il existe une méthode sans avoir besoin de créer cette fonction ? Enfin bref voici mon code, j'aimerais savoir si ya moyen de le raccourcir un peu ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    	static Date ajouteJours(Date d,int n) {
     
     
    		Date ajout = new Date();
     
    		int joursAvantFinMois = nbJoursDuMois(d) - d.jour;
    		int joursRestants = n - joursAvantFinMois;
     
    		if ((d.jour + n) > nbJoursDuMois(d)) {
    			d.mois += 1; //on ajoute 1 mois
    			if (d.mois == 13) {
    				d.annee += 1;
    				d.mois = 1;
    			}
    			while (joursRestants > nbJoursDuMois(d)) {
    				joursRestants = joursRestants - nbJoursDuMois(d);
    				d.mois += 1;
    				if (d.mois == 13) {
    					d.annee += 1;
    					d.mois = 1;
    				}
    			}
    			ajout.annee = d.annee;
    			ajout.mois = d.mois;
    			ajout.jour = joursRestants;
    		} else {
    			ajout.annee = d.annee;
    			ajout.mois = d.mois; //on reste dans le même mois
    			ajout.jour = d.jour + n; //il suffit juste d'ajouter le nombre de jours à n
    		}
    		return ajout;
     
    	}

  14. #14
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tu n'as pas besoin d'autant de conditions.
    Il suffit d'ajouter le nombre de jours au jour du mois en cours, et de faire une boucle qui avance d'un mois aussi longtemps que le jour du mois dépasse le nombre de jours possibles dans le mois en cours.

    Sans faire de boucle, par contre, c'est plus compliqué.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Tu n'as pas besoin d'autant de conditions.
    Il suffit d'ajouter le nombre de jours au jour du mois en cours, et de faire une boucle qui avance d'un mois aussi longtemps que le jour du mois dépasse le nombre de jours possibles dans le mois en cours.

    Sans faire de boucle, par contre, c'est plus compliqué.
    Tu pourrais écrire le code stp ?

  16. #16
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bien sûr que je pourrais, je suis ingénieur.

    Je plaisante, voici le pseudocode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ajout.jour += n;
    while(ajout.jour > nbJoursDuMois(ajout.mois)) {
      convertirDateAuMoisSuivant(ajout);
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Bien sûr que je pourrais, je suis ingénieur.
    Ne me dit pas qu'en plus tu as appris à programmer ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Bien sûr que je pourrais, je suis ingénieur.

    Je plaisante, voici le pseudocode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ajout.jour += n;
    while(ajout.jour > nbJoursDuMois(ajout.mois)) {
      convertirDateAuMoisSuivant(ajout);
    }
    Sauf que ma fonction nbJoursDuMois prend en paramètre une date. Laisse tomber, du moment que mon code est bon et que je me comprends c'est le principal, si j'ai un exo comme ça à l'exam il m'enlèvera 1 point maxi...

  19. #19
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je vois pas ce que ça change pour toi si tu dois indiquer une date ou un jour.

    C'est une chose de chercher à avoir une bonne note. C'en est une autre d'avoir aucune sorte de maîtrise de son propre code.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Je vois pas ce que ça change pour toi si tu dois indiquer une date ou un jour.

    C'est une chose de chercher à avoir une bonne note. C'en est une autre d'avoir aucune sorte de maîtrise de son propre code.
    Avec des commentaires ou un code un peu plus détaillé j'aurais compris mais là j'arrive pas à traduire ton code.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment créer une structure de donnée dynamiquement ?
    Par Beaunico dans le forum Langage
    Réponses: 9
    Dernier message: 24/01/2006, 09h34
  2. Aide pour diagramme de structure des données
    Par DeezerD dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 04/12/2004, 19h10
  3. Méta-Programmation - [ structures de données ]
    Par Dam)rpgheaven dans le forum C++
    Réponses: 3
    Dernier message: 03/12/2004, 19h38
  4. Structure des données en retour d'un DBExtract ?
    Par mikouts dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/01/2003, 15h15
  5. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo