Bjr,
On construit une pyramide avec des billes.
1étage : 1 bille
2 étage : 4 billes pour la base plus celle de l'étage 1 soit 5 billes
3 étage : 9 billes pour la base plus les 5 précédentes, soit 14 billes
4 étage : 30 billes.
On me demande d'ecrire l'algorithme qui en fonction du nbre de bille initial calcule :
- le nbre d'étage de l'empilement le plus grand conctructibles avec ce nombre de bille.
- le nbre de billes qui reste.
J'ai trouvé l'algorithme qui calcule le nbre de bille en fction de nbre d'étage :
c'est la la somme des nxn
Pour étage 1 nbre de bille = 1x1= 1
étage 2 : 2x2+1x1 = 5
étage 3 : 3x3+2x2+1x1= 14
étage 4 : 4x4+3x3+2x2+1x1=30
mais je bloque pour calculer le nbre d'étage en fction du nombre de bille avec en plus le calcul du nbre de billes qui restent ????
Cela doit avoir une relation avec Python.
Merci si vous pouvez m'aider.
Bonjour.
Prière d'éviter les bjr.
Python n'a rien à voir avec la conception de l'algorithme demandé. Python n'est là que pour matérialiser le résultat de votre réflexion.
Imaginons un tas de N billes (N non nul ? C'est suivant votre imagination) . Quelle serait votre première question ?
Bonjour,
Avec ce tas de billes combien d'étage peut avoir ma pyramide ???
B le nbre de billes et n le nombre d'étages.
Le nombre d'étage :
n = B - (1+n²+(n-1)²+(n-2)²+....)
??????????
Merci d'avance.
Steb
Là, vous réfléchissez d'une manière globale... il faut décomposer les opérations à faire.
Posons :
-> N le nombre de billes a empiler
-> Ne le nombre d'étages complets = 0
-> Nr le nombre de billes restantes a empiler = 0
La première question que je me poserais serait :
Est-ce qu'il y a des billes à empiler ?
non :
oui :
Modification :
On pose :
-> N : le nombre de billes a empiler
-> Ne : le nombre d'étages complets = 0
-> Nr : le nombre de billes restantes = 0
Est-ce qu'il y a des billes à empiler ?
non : que fait-on ?
oui : que fait-on ?
-> N : le nombre de billes a empiler
-> Ne : le nombre d'étages complets = 0
-> Nr : le nombre de billes restantes = 0
Est-ce qu'il y a des billes à empiler ?
non : que fait-on ? si plus de billes la pyramide de base carrée est terminée et le reste de billes Nr est 0 et on devrait donc compter le nombre d'étages complets selon un algorithme que j'arrive pas à trouver.
oui : que fait-on ? On vérifie si le nombre de billes restant est suffisant pour rajouter un étage à ma pyramide sachant que le nbre de bille qui sera nécessaire pour rajouter un étage est égal à Ne² avec Ne qui correspond à un étage supplémentaire.
Par exemple si j'ai déjà une pyramide de 3 étages, j'ai utilisé déjà 14 billes et pour rajouter un étage me faudra que Nr soit supérieur à 16 , dans ce cas là j'aurais au moins une pyramide de 4 étages utilisant 30 billes et me faudra continuer avec le reste de billes, si Nr sup à 25 alors je pourrai continuer, et ainsi de suite jusqu'à ce que Nr soit inférieur à Ne² .
Je ne vois pas toujours où tout cela me mène et comment trouver l'alogorithme qui me permettrait de calculer le nbre d'étages en fonction du nbre de billes ???
Merci encore pour votre patience et vos explications même si j'ai l'impression que je bloque vraiment.
Merci,
Steb
étage 3 : 3x3+2x2+1x1= 14
étage 4 : 4x4+3x3+2x2+1x1=30
J'ai essayé de poser :
N Ne Nr
1 1 0
2 1 1
3 1 2
4 1 3
5 2 0
6 2 1
7 2 2
8 2 3
9 2 4
10 2 5
11 2 6
12 2 7
13 2 8
14 3 0
15 3 1
16 3 2
..............................................................................................
29 3 15
30 4 0
31 4 1
32 4 2
...............................................................................................
54 4 24
55 5 0
Mais je vois toujours pas l'algorithme.
Merci d'avance si vous pouvez toujours m'aider.
Steb
Bonjour,,
un algorithme est la description de l'enchainement des opérations, à effectuer pour résoudre un problème
quelles opérations as tu effectuées pour obtenir ton tableau ?
y a-t-il une répétition, d'opérations semblables , combien de fois ou en fonction de quel critère arrêter une telle répétition ?
ces questions sont à répondre en français ordinaire
pas par des litanies de chiffres et de formules
et les éléments de réponse ont été donnés
Bonjour
Savez-vous que vous n'êtes pas loin de l'algorithme demandé.
Le problème est que vous cherchez les formules reliant le nombre d'étages complets Ne et le nombre de billes restantes Nr en fonction du nombre de billes à empiler alors qu'on vous demande de trouver une méthode (algorithme) pour trouver les données Ne et Nr en ne faisant que de simples opérations séquentiellement (et si possible répétitives).
Je vous propose comme algorithme :
Soit N le nombre de billes a empiler
Soit Ne le nombre d'étage = 0
Soit Nr le nombre de billes restantes a empiler = 0
Est-ce qu'il y a des billes à empiler ?
non : fin d'empilement
oui : est-ce qu'il y a au moins 1 bille pour l'étage 1 ?
non : fin d'empilement (Nr = 0 par défaut)
oui : on incrémente Ne (donc Ne = 1) et on enlève 1 (= 1^2) bille des billes restantes
Est-ce qu'il y a des billes à empiler ?
non : fin d'empilement
oui : est-ce qu'il y a au moins 4 billes pour l'étage 2 ?
non : fin d'empilement et il reste quelques billes Nr (sera donné par l'algorithme)
oui : on incrémente Ne (donc Ne = 2) et on enlève 4 (= 2^2) billes des billes restantes
Est-ce qu'il y a des billes à empiler ?
non : fin d'empilement
oui : est-ce qu'il y a au moins 9 billes pour l'étage 3 ?
non : fin d'empilement et il reste quelques billes Nr (sera donné par l'algorithme)
oui : on incrémente Ne (donc Ne = 3) et on enlève 9 (= 3^2) billes des billes restantes
...
Est-ce qu'il y a des billes à empiler ?
non : fin d'empilement
oui : est-ce qu'il y a au moins n^2 billes pour l'étage n ?
non : fin d'empilement et il reste quelques billes Nr (sera donné par l'algorithme)
oui : on incrémente Ne (sera donné par l'algorithme) et on enlève n^2 billes des billes restantes
Bonjour.
Un petit script Python, modifiable à volonté :
# saisie du nombre de billes à empiler N
N = int(input(" Entrez N : "))
print(" ")
# nombre d'étages complet, nul par defaut
Ne = 0
# nombre de billes restantes, nul par defaut
Nr = 0
# boucle tant qu'il reste des billes a empiler
while N > 0 :
# reste-t'il assez de billes pour le futur étage ?
#
# etage 1 : 1 bille
# etage 2 : 4 billes
# etage 3 : 9 billes
# etage 4 : 16 billes
# ...
# etage n : n^2 billes
if N >= (Ne + 1)**2 :
# oui : etage complet
# incrementation du nombre d'étages complets
Ne += 1
# mise a jour du nombre de billes non empilees
N -= Ne**2
else :
# non : etage incomplet
# nombre de billes restantes
Nr = N
# provoque la sortie de la boucle while
N = 0
# affichage du nombre d'etages complets
print(" Nombre d'etages complets Ne : ", Ne)
# affichage du nombre de billes restantes
print(" Nombre de billes restantes Nr : ", Nr)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :