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 :

Formule pour calculer augmentation population année après année


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut Formule pour calculer augmentation population année après année
    Bonjour,
    je suis en train de faire un petit exo sur les boucles conditionnelles et je bute sur le calcul pour afficher l'augmentation année après année d'une population, connaissant le nombre de la population de départ ( 7 en milliard) pour une année donnée ( ici 2011 ) avec u taux de croissance constant de 1.2%.
    j'ai fait la première partie, mais partie 2 je veux afficher année par année la population jusqu’à un nombre de population butoir ( ici 8,5 en milliard )

    mon calcul foire car je devrais avoir ceci
    Population en 2012 : 7.085
    Population en 2013 : 7.170
    Population en 2014 : 7.257
    Population en 2015 : 7.344
    .......
    Population en 2028 : 8.584

    hors j'ai ceci

    Population en 2012 :7,085
    Population en 2013 :8,085

    voila 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
    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
    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 =====
    		// utilisez cette instruction pour poser votre question :
            int anneFinale;
            double populationFinale;
            int nombreAnnee ;
           do {
            	System.out.print("Quelle année (> " + anneeInitiale + ") ? ");
          	anneFinale = keyb.nextInt();
            	nombreAnnee = anneFinale - anneeInitiale;
           }while (anneFinale < anneeInitiale);
     
          populationFinale = populationInitiale*(Math.exp(nombreAnnee*(tauxCroissance/100)));
     
          System.out.println("Population en "+anneFinale+" :"+df.format(populationFinale));
     
     
            // ===== PARTIE 2 =====
           Scanner keyb2 = keyb;	
     
           double populationCible;   
     
           double croissancePopulation = populationInitiale*(Math.exp(1*(tauxCroissance/100)));
     
           double cumulPopulation =populationInitiale+croissancePopulation;
     
            System.out.println("====---- PARTIE 2 ----====");
     
            do{
           	System.out.println("Combien de milliards (> " + populationInitiale + ") ? "); 
           	populationCible = keyb2.nextDouble();
            } while (populationCible<populationInitiale);
     
            for (double i=0; croissancePopulation<=populationCible;i++) {
            	double anne = i++;
            	double test = populationInitiale *(( 1+tauxCroissance)) ;
     
     
                 System.out.println("Population en "+(++anneeInitiale)+" :"+df.format(croissancePopulation++));
            }
     
            // ===== PARTIE 3 =====
            System.out.println("====---- PARTIE 3 ----====");
     
     
     
            /*******************************************
             * Ne rien modifier apres cette ligne.
             *******************************************/
        }
    }

    merci pour l'aide

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Bonjour. Le taux de croissance est de 1.2%, donc
    populationn+1 = populationn * (1 + (1.2 / 100))

    EDIT : une petite remarque
    Dans la partie 1 de votre exercice, pour avoir la population pour l'année finale, je crois que la formule est
    population n + 1 = population n * 1.012 nombre années. Puisqu'il s'agit d'une suite géométrique de raison 1.012.
    Ce qui donne en java
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    populationFinale = populationInitiale * Math.pow(1 + (tauxCroissance / 100), nombreAnnees);
    Il faut utiliser la méthode Math.pow et non Math.exp

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci pour les pistes donnée

    l'exercice impose d'utiliser la fonction exponentielle Math.exp au moins pour la partie 1. comme cette partie est ok je me concentre sur la partie deux

    j'ai modifié la formule comme suit selon ton indication
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double croissancePopulation = populationInitiale*(1+(tauxCroissance/100));
    mais j'arrive au même résultat ( à ceci prés que j'ai ici 7,084 au lieu de 7,085 qui est le vrai résultat pour l'année 2012 , même remarque pour l'année 2013

    Population en 2012 :7,084
    Population en 2013 :8,084

    partie du code qui me pose probleme

    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
     Scanner keyb2 = keyb;	
            double populationCible;   
            double croissancePopulation = populationInitiale*(1+(tauxCroissance/100));
     
           double cumulPopulation =populationInitiale+croissancePopulation;
     
         //  populationInitiale ++ = populationInitiale * (1 + (1.2 / 100)) 
     
            System.out.println("====---- PARTIE 2 ----====");
     
            do{
           	System.out.println("Combien de milliards (> " + populationInitiale + ") ? "); 
           	populationCible = keyb2.nextDouble();
            } while (populationCible<populationInitiale);
     
            for (double i=0; populationCible>croissancePopulation;i++) {
     
     
                 System.out.println("Population en "+(++anneeInitiale)+" :"+df.format(croissancePopulation++));
            }

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Vous faites une confusion. La variable que vous nommez croissancePopulation est en réalité la poupulation de l'année n + 1.
    Mais le souci vient de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (double i=0; populationCible>croissancePopulation;i++) {
                 System.out.println("Population en " + (++anneeInitiale) + " :"+df.format(croissancePopulation++));
    }
    Ce n'est pas correct.
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    croissancePopulation = croissancepopulation * ( 1 + (tauxCroissance / 100));
    while (populationCible > croissancePopulation)
            System.out.println("Population en " + (++anneeInitiale) + " :" + df.format(croissancePopulation);
            croissancePopulation = croissancepopulation * ( 1 + (tauxCroissance / 100));
    N'oubliez pas : la variable croissancePopulation est en fait la population de l'année suivante.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci pour l'aide mais ça ne fonctionne pas

    je note dans votre réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    croissancePopulation = croissancepopulation * ( 1 + (tauxCroissance / 100));
    s'agit il de la même variable ou est ce autre chose ?

    je vois que vous supprimez la boucle for , pourquoi ?

    encore merci

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Ah oui. Il s'agit de la même variable. J'ai fait une erreur.
    Il n'est pas nécessaire d'utiliser une boucle for. Ce n'est la meilleure solution à votre problème. Le code de la solution.
    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
     
    Scanner keyb2 = keyb;	
    double populationCible;   
    double populationCourante; // Repreésente la population de la nouvelle année
    System.out.println("====---- PARTIE 2 ----====");
    do{
           	System.out.println("Combien de milliards (> " + populationInitiale + ") ? "); 
           	populationCible = keyb2.nextDouble();
    } while (populationCible < populationInitiale);
     
    populationCourante = populationInitiale * ( 1 + (tauxCroissance / 100));
    while (populationCible > populationCourante)
            System.out.println("Population en " + (++anneeInitiale) + " :" + df.format(populationCourante);
            populationCourante = populationCourante * ( 1 + (tauxCroissance / 100));
    }
    Remplacez ce code par le votre et cela devraot fonctionner.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    bravo esired, ça fonctionne parfaitement

    encore merci !

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

Discussions similaires

  1. formule pour calculer des paies au Québec
    Par SueSunny dans le forum Modélisation
    Réponses: 0
    Dernier message: 08/04/2010, 01h46
  2. Formule pour calcul de prime
    Par zirh92 dans le forum Excel
    Réponses: 18
    Dernier message: 27/12/2008, 22h05
  3. Formule pour calculer un âge dans un TextBox
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 09/12/2008, 09h49
  4. [FORMULES] Formule pour calcul des marges
    Par termor dans le forum Excel
    Réponses: 8
    Dernier message: 15/07/2008, 17h15
  5. [CR XI] Erreur formule pour calculer pourcentage
    Par campia dans le forum Formules
    Réponses: 1
    Dernier message: 19/07/2007, 09h35

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