Défi

Vous souhaitez mettre en place un système permettant de faire des statistiques sur la météo de votre région.

Vous disposez déjà d'une fonction qui vous permet de savoir s'il fait beau temps pour un jour donné.

1
/** JavaScript */
2
3
// Simule l'information du beau temps.
4
function isGoodWeather () {
5
  return Math.random() < 0.20
6
}

Question

À partir de cette fonction prédéfinie, construisez un programme qui, pour chaque jour de l'année, affiche sa météo et calcule à la fin de l'année le pourcentage de jours de beau temps.

Pour cela, dans une boucle for, parcourez 365 jours en affichant à chaque fois « Jour X : il fait beau » ou « Jour X : il fait moche ».

À la fin des 365 jours, afficher le pourcentage de beaux jours obtenus.

Indice

Appeler simplement isGoodWeather() pour chaque jour : si le résultat est true, alors il s'agit d'un beau jour.

Utiliser Math.round(x) pour arrondir un nombre x.

Solution

1
let goodDays = 0
2
3
for (let i = 0; i < 365; i++) {
4
  if (isGoodWeather()) {
5
    goodDays++
6
    console.log('Jour ' + i + ': il fait beau')
7
  } else {
8
    console.log('Jour ' + i + ': il fait moche')
9
  }
10
}
11
12
const percent = Math.round(goodDays / 365 * 100)
13
console.log('Pourcentage de jours beaux dans l\'année: ' + percent + '%')

Question

Vous voulez maintenant savoir si vous pouvez sortir dehors pour un jour donné. Vous sortez s'il fait beau.

En réutilisant la fonction prédéfinie, réalisez un programme qui boucle jusqu'à tant qu'il fasse beau.

Affichez pour chaque jour « Jour X : je sortirai demain » ou « Jour X : il faut beau, je sors » pour le jour de beau temps.

Solution

1
let goodDay = false
2
let i = 0
3
4
while (!goodDay) {
5
  goodDay = isGoodWeather()
6
  if (goodDay) {
7
    console.log('Jour ' + i + ': il fait beau je sors!')
8
  } else {
9
    console.log('Jour ' + i + ': je sortirai demain...')
10
  }
11
  i++
12
}

Question

Finalement, vous voulez avoir un programme qui consigne le jour de chaque semaine où vous êtes sorti.

Pour chacune des 52 semaines de l'année, le programme boucle jusqu'à trouver un jour de beau temps dans la semaine. Dans ce cas, il affiche : « Je suis sorti cette semaine X, le jour Y ».

Indice

Les semaines sont parcourues dans une boucle for. À l'intérieur, une boucle while permet de parcourir les jours tant qu'aucun n'est un beau jour.

Indice

La boucle des jours de la semaine doit s'arrêter dans deux cas :

  • Si un jour de beau temps est trouvé.

  • S'il n'y a plus de jours dans la semaine (pas plus de 7 itérations par semaine).

Solution

On obtient deux boucles imbriquées :

  • La boucle externe effectuera quoi qu'il arrive 52 itérations.

  • La boucle imbriquée effectuera au maximum 7 itérations, et s'arrêtera avant si on trouve un jour de beau temps.

1
for (let i = 1; i < 53; i++) {
2
  // Début de la semaine i
3
  let goodDay = false
4
  let weekday = 1
5
6
  // Tant qu'aucun beau jour n'est trouvé et que la semaine n'est pas terminée
7
  while (!goodDay && weekday <= 7) {
8
    goodDay = isGoodWeather()
9
10
    if (goodDay) {
11
      console.log('Je suis sorti cette semaine ' + i + ', le jour ' + weekday)
12
    }
13
    weekday++
14
  }
15
}