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.

1
let nbRoses = 1478
2
nbRoses = String(nbRoses) 
3
4
let nbHundreds = nbRoses.substring(0, nbRoses.length - 2) 
5
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.

1
let nbTens = nbRoses[nbRoses.length - 2] 
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.

1
let nbMedium = (nbTens * 10) / 30
2
nbMedium = Math.floor(nbMedium) 
3
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.

1
let nbUnities = nbRoses[nbRoses.length - 1] 
2
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

1
console.log('Nombre de gros bouquets: ' + nbHundreds)
2
console.log('Nombre de gros bouquets moyens : ' + nbMedium)
3
console.log('Nombre de petits bouquets: ' + nbSmall)
4
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é