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

avec Java Discussion :

Résultat faux d'un calcul


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2014
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Résultat faux d'un calcul
    Bonjour,

    Je suis inscrit à un MOOC (Initiation à la programmation Java).

    Voici le le résultat escompté pour l'exercice :

    Population en 2068 : 13.873 ; taux de croissance : 1.2%
    Population en 2069 : 14.040 ; taux de croissance : 0.6%
    Population en 2070 : 14.124 ; taux de croissance : 0.6%
    Population en 2195 : 29.018 ; taux de croissance : 0.3%

    — la population double en 2069 où elle passe de 7 à 14 milliards ;
    — qu’elle doit aussi doubler en 2185 où elle passe de 14 à 28 milliards.

    Le 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    import java.util.Scanner;
    import java.text.DecimalFormat;
     
    public class Population {
        public static void main(String[] args) {
     
            DecimalFormat df = new DecimalFormat("#0.000");
            Scanner keyb = new Scanner(System.in);
     
            int anneeInitiale = 2011;        // annee initiale
            double tauxCroissance = 1.2;     // taux de croissance, en %
            double populationInitiale = 7.0; // population initiale, en milliard d'humains
     
            double populationCourante = populationInitiale; // population mondiale pour l'annee courante
            int anneeCourante = anneeInitiale;              // annee de calcul
     
            System.out.println("====---- PARTIE 1 ----====");
            System.out.println("Population en " + anneeCourante + " : " + df.format(populationCourante));
     
            /*******************************************
             * Completez le programme a partir d'ici.
             *******************************************/
     
            // ===== PARTIE 1 =====
            int anneeFinale;
            do{
     
                System.out.print("Quelle année (> " + anneeInitiale + ") ? ");
            anneeFinale=keyb.nextInt();
            }
            while(anneeInitiale>=anneeFinale);
     
            System.out.println("Population en "+anneeFinale+": "+df.format((populationInitiale*Math.exp((anneeFinale-anneeInitiale)*tauxCroissance/100))));
     
            // ===== PARTIE 2 =====
     
            System.out.println("\n====---- PARTIE 2 ----====");
            double populationCible;
     
            do{
                System.out.print("Combien de milliards (> 7.0) ? ");
                populationCible=keyb.nextDouble();
     
            }while(populationCible<=populationInitiale);
     
            while(populationCible>=populationCourante){
                populationCourante=populationCourante*Math.exp(tauxCroissance/100);
                System.out.println("Population en "+(anneeCourante+1)+ " : "+df.format(populationCourante));
                anneeCourante+=1;
     
                 };
     
     
            // ===== PARTIE 3 =====
            System.out.println("\n====---- PARTIE 3 ----====");
     
            anneeCourante=anneeInitiale+1;
            populationCourante=populationInitiale;
     
            double cible=populationInitiale;
     
            while(populationCible>=populationCourante){
     
                populationCourante=populationCourante*Math.exp(tauxCroissance/100);
                System.out.println("Population en "+ anneeCourante + " : "+df.format(populationCourante)+" ; taux de croissance : "+tauxCroissance+"%");
                anneeCourante+=1;
     
                if((int)(populationCourante*100)/100 ==(int)(cible*2.0*100)/100){
                    tauxCroissance=tauxCroissance/2;              
                    cible=populationCourante;}
            }
     
            /*******************************************
             * Ne rien modifier apres cette ligne.
             *******************************************/
        }
    }
    Quelqu'un saurait-il me guider un peu pour finaliser ce programme ?

    Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 23
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    Pouviez vous S.V.P fournir plus de détail sur l’exercice(problème) que vous essayez de résoudre a fin de comprendre mieux votre code.

  3. #3
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pour obtenir le résultat indiqué, il faut que tu affiches la population après avoir fait le traitement du taux d'accroissement :

    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
    double cible=populationInitiale;
     
    while(populationCible>=populationCourante){
     
        populationCourante=populationCourante*Math.exp(tauxCroissance/100);
     
        if((int)(populationCourante*100)/100 ==(int)(cible*2.0*100)/100){
            tauxCroissance=tauxCroissance/2;              
            cible=populationCourante;
        }
     
        System.out.println("Population en "+ anneeCourante + " : "+df.format(populationCourante)+" ; taux de croissance : "+tauxCroissance+"%");
     
        anneeCourante+=1;
    }
    Ou en plus simple, au niveau du test :

    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
    double cible=populationInitiale*2;
     
    while (populationCible>=populationCourante){
     
        populationCourante=populationCourante*Math.exp(tauxCroissance/100);
     
        if ( populationCourante >= cible ){
            tauxCroissance=tauxCroissance/2;              
            cible=populationCourante*2;
        }
     
        System.out.println("Population en "+ anneeCourante + " : "+df.format(populationCourante)+" ; taux de croissance : "+tauxCroissance+"%");
     
        anneeCourante+=1;
    }
    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.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2014
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par jaafaresprit Voir le message
    Bonjour,
    Pouviez vous S.V.P fournir plus de détail sur l’exercice(problème) que vous essayez de résoudre a fin de comprendre mieux votre code.
    Bonsoir
    merci de votre réponse en effet le problème réside dans le taux et la population sont faux :
    voici le résultat finale attendu :
    la formule de l'exercice : pfin = pinit  exp(nb * t  )
    populationFinale=populationInitiale exp(nb*taux) (nb= nombre annéee)
    ====---- PARTIE 2 ----====
    Combien de milliards (> 7.0) ? 29
    Population en 2012 : 7.085
    Population en 2013 : 7.170
    Population en 2014 : 7.257
    Population en 2015 : 7.344
    Population en 2016 : 7.433
    Population en 2017 : 7.523
    Population en 2018 : 7.613
    Population en 2019 : 7.705
    Population en 2020 : 7.798
    Population en 2021 : 7.892
    ...
    Population en 2130 : 29.192
    ====---- PARTIE 3 ----====
    Population en 2012 : 7.085 ; taux de croissance : 1.2%
    Population en 2013 : 7.170 ; taux de croissance : 1.2%
    Population en 2014 : 7.257 ; taux de croissance : 1.2%
    Population en 2015 : 7.344 ; taux de croissance : 1.2%
    Population en 2016 : 7.433 ; taux de croissance : 1.2%
    Population en 2017 : 7.523 ; taux de croissance : 1.2%
    Population en 2018 : 7.613 ; taux de croissance : 1.2%
    Population en 2019 : 7.705 ; taux de croissance : 1.2%
    Population en 2020 : 7.798 ; taux de croissance : 1.2%
    Population en 2021 : 7.892 ; taux de croissance : 1.2%
    ...
    Population en 2068 : 13.873 ; taux de croissance : 1.2%
    Population en 2069 : 14.040 ; taux de croissance : 0.6%
    Population en 2070 : 14.124 ; taux de croissance : 0.6%
    ...
    Population en 2195 : 29.018 ; taux de croissance : 0.3%
    Cet exemple est un extrait. A la place des ... seront évidemment affichées toutes
    les années intermédiaires.
    Vous noterez que dans cet exemple :
    — la population double en 2069 où elle passe de 7 à 14 milliards ;
    — qu’elle doit aussi doubler en 2185 où elle passe de 14 à 28 milliards.

    ***************************************************************
    avec mes remerciements
    Mohammed

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2014
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Pour obtenir le résultat indiqué, il faut que tu affiches la population après avoir fait le traitement du taux d'accroissement :

    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
    double cible=populationInitiale;
     
    while(populationCible>=populationCourante){
     
        populationCourante=populationCourante*Math.exp(tauxCroissance/100);
     
        if((int)(populationCourante*100)/100 ==(int)(cible*2.0*100)/100){
            tauxCroissance=tauxCroissance/2;              
            cible=populationCourante;
        }
     
        System.out.println("Population en "+ anneeCourante + " : "+df.format(populationCourante)+" ; taux de croissance : "+tauxCroissance+"%");
     
        anneeCourante+=1;
    }
    Ou en plus simple, au niveau du test :

    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
    double cible=populationInitiale*2;
     
    while (populationCible>=populationCourante){
     
        populationCourante=populationCourante*Math.exp(tauxCroissance/100);
     
        if ( populationCourante >= cible ){
            tauxCroissance=tauxCroissance/2;              
            cible=populationCourante*2;
        }
     
        System.out.println("Population en "+ anneeCourante + " : "+df.format(populationCourante)+" ; taux de croissance : "+tauxCroissance+"%");
     
        anneeCourante+=1;
    }
    Je vous remercie de votre aide mais votre code ne donne pas le résultat attendu

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    J'obtiens ça :

    Population en 2012 : 7,085 ; taux de croissance : 1.2%
    [...]
    Population en 2065 : 13,382 ; taux de croissance : 1.2%
    Population en 2066 : 13,544 ; taux de croissance : 1.2%
    Population en 2067 : 13,707 ; taux de croissance : 1.2%
    Population en 2068 : 13,873 ; taux de croissance : 1.2%
    Population en 2069 : 14,040 ; taux de croissance : 0.6%
    Population en 2070 : 14,124 ; taux de croissance : 0.6%
    [...]
    Population en 2184 : 27,992 ; taux de croissance : 0.6%
    Population en 2185 : 28,160 ; taux de croissance : 0.3%
    Population en 2186 : 28,245 ; taux de croissance : 0.3%
    [...]
    Population en 2194 : 28,931 ; taux de croissance : 0.3%
    Population en 2195 : 29,018 ; taux de croissance : 0.3%
    Population en 2196 : 29,105 ; taux de croissance : 0.3%
    ...
    ça correspond bien à ce que tu as mis dans ton premier message, pourtant...
    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.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2014
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Probléme résolu
    Bonsoir Monsieur ,

    Effectivement le calcul est bon, j'ai oublier de mettre le 2éme (fois)
    Je vous remercie infiniment grasse a vous j'ai 20 point de plus sur 40
    je vais passer a la suite d'un autre exercice

    merci encore de votre gentillesse
    salutations
    Mohammed

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008R2] Sum() dans un membre calculé et résultat "faux"
    Par Donpi dans le forum SSAS
    Réponses: 0
    Dernier message: 18/09/2013, 11h28
  2. calcul entre réels et résultat faux
    Par loukoum82 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/12/2009, 15h40
  3. Résultat anormal lors de calcul Double
    Par totore dans le forum Langage
    Réponses: 8
    Dernier message: 04/12/2006, 01h45
  4. Réponses: 1
    Dernier message: 08/04/2006, 12h41
  5. [BDE][PARADOX][D7]Filter et RecordCount = résultat faux
    Par N1bus dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/10/2004, 22h15

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