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:
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.