Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Algorithme

Posté par
STEB
05-02-18 à 01:23

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.

Posté par
bbomaths
re : Algorithme 05-02-18 à 07:34

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 ?

Posté par
STEB
re : Algorithme 05-02-18 à 08:41

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

Posté par
bbomaths
re : Algorithme 05-02-18 à 09:32

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 :

Posté par
bbomaths
re : Algorithme 05-02-18 à 09:33

Que feriez-vous alors dans les 2 cas ?

Posté par
bbomaths
re : Algorithme 05-02-18 à 09:47

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 ?

Posté par
STEB
re : Algorithme 05-02-18 à 21:44


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

Posté par
STEB
re : Algorithme 05-02-18 à 22:04

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

Posté par
mathafou Moderateur
re : Algorithme 05-02-18 à 23:01

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

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

c'est ça l'algorithme
tu es en train de le rédiger par ces phrases là.
(compter les étages, c'est ce que tu dis en écrivant "on rajoute un étage")

ensuite on traduit ces phrases en français dans une langue plus "formalisée"

Posté par
bbomaths
re : Algorithme 06-02-18 à 05:07

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


Qu'en pensez-vous ?

Posté par
STEB
re : Algorithme 07-02-18 à 21:47

Merci à vous 2 , je comprends bien mieux maintenant.

Merci, encore,

Steb

Posté par
bbomaths
re : Algorithme 08-02-18 à 06:23

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 :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1567 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !