Défi
Julie est fleuriste. Elle reçoit chaque jour plusieurs milliers de fleurs.
Elle a besoin de les trier et de savoir quel genre de bouquets elle pourra faire.
Julie a reçu 1 478 roses, elle peut les transformer en gros bouquets (100 roses), en bouquets moyens (30 roses), en petits bouquets (10 roses) ou vendre les roses à l'unité.
Question
Julie voudrait faire le maximum de bouquets et les plus gros possibles. Calculer le nombre de gros bouquets réalisables.
Indice
Le nombre de gros bouquets correspond au nombre de centaines de roses reçues. Ce nombre correspond aux deux premiers caractères du nombre de roses. Une conversion serait utile...
Indice
Il est possible de récupérer la sous-chaîne contenant les deux premiers caractères d'une chaîne str
avec la syntaxe str.substring(0, 2)
. Les indices commencent à 0.
Comme le numéro des centaines se trouve toujours au troisième caractère en partant de la fin, il est plus pertinent d'utiliser la syntaxe str.substring(0, str.length - 2)
, qui s'adaptera à plusieurs dizaines de milliers de roses.
Solution
On convertit le nombre de roses en chaîne pour pouvoir accéder à chacun de ses chiffres, puis on calcule le nombre de centaines, donc le nombre de gros bouquets, et on le convertit en nombre.
let nbRoses = 1478
nbRoses = String(nbRoses)
let nbHundreds = nbRoses.substring(0, nbRoses.length - 2)
nbHundreds = Number(nbHundreds)
Question
Julie voudrait ensuite savoir combien de dizaines de bouquets il lui reste. Calculer ce nombre.
Indice
Il faut récupérer le nombre de dizaines restantes, les centaines ayant déjà été prises en compte. Le nombre de dizaines se situe toujours à l'avant dernière caractère. On peut y accéder avec la syntaxe []
.
Indice
Le dernier caractère d'une chaîne str
se situe à l'indice str.length - 1
. Donc pour l'avant dernier caractère.
Solution
On calcule le nombre de dizaines qui permettra de calculer le nombre de petits et de moyens bouquets, et on le convertit en nombre.
let nbTens = nbRoses[nbRoses.length - 2]
nbTens = Number(nbTens)
Question
À partir du nombre de dizaines de roses, calculer le nombre de bouquets moyens et le nombre de petits bouquets que Julie peut réaliser.
Indice
Les bouquets moyens sont composés de 30 roses, et sont prioritaires par rapport aux petits bouquets.
Indice
La fonction Math.floor(nombre)
permet d'arrondir le résultat d'une division.
Solution
On calcule le nombre de bouquets moyens en retirant le maximum de groupes de 30 fleurs, puis on calcule le nombre de petits bouquets.
let nbMedium = (nbTens * 10) / 30
nbMedium = Math.floor(nbMedium)
const nbSmall = nbTens - nbMedium * 3
Question
Il est possible qu'à ce stade, il reste des roses ne pouvant pas être incluses dans un bouquet. Récupérer le nombre de roses restantes.
Indice
Comme un bouquet est composé d'au moins 10 roses, le nombre de roses restant est celui des unités, à savoir le dernier chiffre du nombre.
Solution
On récupère le dernier chiffre du nombre de roses total, donc le nombre de roses restantes, et on le convertit en nombre.
let nbUnities = nbRoses[nbRoses.length - 1]
nbUnities = Number(nbUnities)
Question
Afficher le nombre de bouquets de chaque catégorie ainsi que le nombre de roses restant. Quels résultats obtient-on ?
Solution
console.log('Nombre de gros bouquets: ' + nbHundreds)
console.log('Nombre de gros bouquets moyens : ' + nbMedium)
console.log('Nombre de petits bouquets: ' + nbSmall)
console.log("Nombre de roses vendues à l'unité: " + nbUnities)
Julie pourra concevoir :
14 gros bouquets
2 bouquets moyens
1 petit bouquet
8 roses vendues à l'unité