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

Langage Java Discussion :

Polynome


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Par défaut Polynome
    Bonsoir,

    Je dois créer une méthode addElm d'un polynôme dans lequel j'ai un coefficient (double) et une puissance (int). Seulement on veut que si un coefficient a une puissance identique à l'autre, alors elle écrase celle-ci. Nous sommes dans le chapitre où on utilise les HashMap, ArrayList ...

    Et dans Program, j'ai ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Program {
      public static void main(String[] args) {
       Polynomial<Integer> p1=new Polynomial<Integer>();
       p1.addElm(2,5);
       p1.addElm(1, 3);
       p1.addElm(0, 1);
       p1.addElm(1, 4);
       for (Integer r : p1)
         System.out.println(r.toString());
      }
    }
    S'il vous plait, aidez-moi a créer la méthode addElm car j'ai tout essayé avec un ami, on n'a pas trouvé et on tourne en rond.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    En gros, tu dois écrire une méthode qui :

    1. ajoute un monôme dans un polynôme
    2. s'il existe déjà un monôme de même puissance, ça n'ajoute pas, ça remplace


    C'est bien ça ?

    Il serait plus utile de nous montrer le code de la classe Polynomial que la méthode main, donc je vais parler principes. Le principe est simple : pour remplacer un monôme, quelque soit les conditions, il faut en avoir la référence. Si on ne l'a pas, il faut la chercher.

    Avec un stockage sous forme de List, il suffit de la parcourir, et de comparer la puissance de chaque monôme parcouru, et s'il y'en a un qui a la même puissance que celui qu'on ajoute, on le remplace. Si on a rien remplacé, à la fin, on ajoute.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void add(Monome monome) {
     
       boolean remplace=false; // au début on a rien remplacé
       for(int i=0; i<listeDeMonomes.size(); i++) { // on parcourt les monômes déjà dans la liste
           if ( listeDeMonomes.get(i).getPuissance()==monome.getPuissance()) { // il existe déjà un monôme de même puissance que celui ajouté et il est en position i 
              listeDeMonomes.set(i, monome); // on remplace
              remplace=true; // on mémorise qu'on a remplacé
              break; // on sort de la boucle parce que ce n'est plus la peine de chercher
           }
       }
       if( !remplace ) { // on n'a rien remplacé, on ajoute
            listeDeMonomes.add(monome);
       }
    }
    Une variante sans le booléen pourrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void add(Monome monome) {
     
       for(int i=0; i<listeDeMonomes.size(); i++) { // on parcourt les monômes déjà dans la liste
           if ( listeDeMonomes.get(i).getPuissance()==monome.getPuissance()) { // il existe déjà un monôme de même puissance que celui ajouté et il est en position i 
              listeDeMonomes.set(i, monome); // on remplace
              return; // on sort de la méthode
           }
       }
      // on n'a rien remplacé, on ajoute
      listeDeMonomes.add(monome);
    }
    Mais un puriste pourrait te dire que ce n'est pas structuré (plusieurs points de sortie).

    Une autre solution est d'utiliser une Map. En utilisant les puissances comme clefs. La solution est alors tout simple, de par le fonctionnement naturel de la Map (toute clef ne figure qu'une seule fois : donc écrire un mapping remplace le précédent s'il existe).

    La map pourra être déclarée et initialisée comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Map<Integer, Monome>  map = new HashMap<>();
    Ou éventuellement une TreeMap pour avoir un tri selon les coefs, mais je ne sais pas si vous avez déjà vu ça en cours. (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Map<Integer, Monome>  map = new TreeMap<>(Comparator.<Integer>naturalOrder().reversed());
    )

    Donc tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void addMonome(Monome monome) {
          map.put(monome.getPuissance(), monome);
    }
    Maintenant, de ce que je vois de ton code, c'est que tu n'as pas de classe Monome. Avec une map, on peut mapper les coef sur les puissances, donc on pourrait avoir une map définie comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Map<Integer, Double>  map = new HashMap<>();
    et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void addMonome(double coef, int puissance) {
          map.put(puissance, coef);
    }
    tout simplement
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Par défaut
    En fait on me demande de base de créer la classe polynomial avec un constructeur vide. Et avec l'implementation de Entry jai pu avoir les méthodes keySet, getValue et SetValue. J'ai rajouté une méthode toString pour l'afficher dans mon programme après.

    Donc je n'ai pas les trucs monôme et tout

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Tu as du code a montrer ? Ce serait plus clair que de nous donner des trucs en vrac sans qu'on puisse voir comment tu les utilises. Tu sembles parler de Map.Entry : il n'y aucune raison de parcourir l'entrySet de la Map, ni même le ketSet, pour faire "l'ajoute ou remplace" dont tu parlais (enfin que je suppose à faire, parce que tu n'as pas confirmé). Quant à l'affichage, il n'en était pas question dans ta question initiale, je n'en ai donc pas parlé.

    Citation Envoyé par jordan5526 Voir le message
    Donc je n'ai pas les trucs monôme et tout
    Je t'ai donné un code sans classe monome ! Evidemment, comme tu ne montres pas ton code, je suis obligé de faire des réponses de principe.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Par défaut
    J'essaye de vous envoyer ca ce midi. La classe polynôme je dois la créer je n'ai pas de classe de base cest moi qui doit la créer de À à Z

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par jordan5526 Voir le message
    je n'ai pas de classe de base cest moi qui doit la créer de À à Z
    J'ai bien compris, mais ça ne t'empêche pas de nous en montrer le code.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. comment obtenir un polynome de regression
    Par evariste_galois dans le forum Mathématiques
    Réponses: 17
    Dernier message: 19/01/2007, 15h06
  2. [OCaml] Multiplication de deux polynômes
    Par snyper_ubi dans le forum Caml
    Réponses: 1
    Dernier message: 17/10/2006, 17h12
  3. probleme avec la creation d une classe "polynome"
    Par le_voisin dans le forum C++
    Réponses: 10
    Dernier message: 05/09/2006, 00h52
  4. Exprimer une surface en polynome de Zernike
    Par Mataka dans le forum MATLAB
    Réponses: 1
    Dernier message: 11/08/2006, 14h33
  5. Valeurs d'un polynome
    Par BNS dans le forum C++
    Réponses: 7
    Dernier message: 07/06/2006, 15h06

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