Connaitre le niveau d'une pyramide

Signaler
-
 Nauram -
Bonjour à tous,

J'ai réussis à programmer la construction de ma pyramide cependant le code n'est pas optimiser et je voudrais donc de l'aide pour trouver une formule général sur chaque niveau de ma pyramide.

voici la pyramide en question :

https://image.noelshack.com/fichiers/2020/09/5/1582876875-capture-pyramide.png

je souhaite juste retrouver les niveaux via une formule général sachant que j'ai le rang,le diamètre, le décalage, la hauteur de ma pièce.
Mon "premier niveau" est le rang 0 et ma pyramide termine donc au niveau 5 qui comporte 1 pièce ( le haut de la pyramide) .

J'ai réussis à trouver une formule général pour déterminer mes positions x et y de chaque pièces cependant pour le rang je suis coincé.
Merci de votre aide.

7 réponses

Messages postés
13254
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 novembre 2020
743
bonjour, peux-tu déjà partager ce que tu as réalisé?
cela aidera peut-être à comprendre ce que tu veux obtenir.
Bonjour,

alors j'ai réussis à trouver la position de toutes les pieces de la pyramide en xy
avec x = (largeur+ecart)*(rang--niveau/2)
y= niveau*hauteur

cependant dans mon code ( cest sur un robot ) je définie plusieurs niveau avec les conditions "if" j'en ai donc 5 au total j'aimerais pouvoir trouver une formule général sur le niveau qui me bloque pour pouvoir avoir une seul instruction y et supprimer les 4 if à la chaine

désolé de ne pas avoir posté avant mes résultats
Messages postés
13254
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 novembre 2020
743
tes définitions avec les conditions "if" sont-elle secrètes?
tu veux simplifier quelque chose que tu n'expliques pas: pourquoi ne pas nous le montrer?
Non,
Cependant je ne sais pas si ils vont être utile je te poste les liens image.
elles sont adaptés au langage de programmation de mon robot mais voici les images si tu veux :
( ceci est une boucle if)


https://zupimages.net/viewer.php?id=20%2F11%2F0qus.png
https://zupimages.net/viewer.php?id=20%2F11%2F9s7w.png
https://zupimages.net/viewer.php?id=20%2F11%2F90og.png
https://zupimages.net/viewer.php?id=20%2F11%2F3xgo.png

J'ai remplacé le while par une boucle if mais les variables restent les meme.
J'ai donc 5 boucles if comme ca dans mon programme (72 lignes au total) ce n'est pas opti, il me faut donc une formule général pour trouver le niveau et pouvoir supprimer mes 72 lignes en 3 lignes.
Messages postés
13254
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 novembre 2020
743
confirmes-tu que ton programme donne le bon résultat, que tu souhaites simplement le simplifier?
je suis étonné par ta boucle en ligne 38, on dirait que la variable de boucle n'est jamais modifiée.

si tu veux que nous examinions ta logique, je te demande d'expliquer ce que tu fais en utilisant le vocabulaire de l'énoncé.
tu utilises "niveau", je suppose que cela correspond à l'étage.
tu utilises "rang", cela correspond à quoi?

peux-tu donner quelques exemples des résultats du calcul
x = (largeur+ecart)*(rang--niveau/2)
?
Messages postés
602
Date d'inscription
dimanche 17 juillet 2016
Statut
Membre
Dernière intervention
19 novembre 2020
59
La balise "Code" est dans le bandeau au dessus de la fenêtre de réponse, quatrième icône en partant de la gauche.
Sans code point de profit.
Messages postés
2
Date d'inscription
mardi 10 mars 2020
Statut
Membre
Dernière intervention
10 mars 2020

Bonjour et merci pour ton aide,
Après vérification de mon programme ce matin, j'ai en effet rectifier la variable ligne 38 et le programme fonctionne. je t'explique ma logique :




- le niveau est bien l'étage donc de : [P1;P5] = niveau 0 ( pièce une à cinq), [P6;P9] = niveau 1 , [P10;P12] = niveau 2 ,[P13;P14] = niveau 3, P15 = niveau 4 ( la dernière pièce ).

- le rang de la pièce est le numéros de la pièce - 1 donc P1 = 1 -1=> rang(P1) = 0, rang ( P2) = 1, etc.




donc avec ma formule ça donne : "x = (largeur+écart)*niveau(largeur+écart)/2?"
x(P1) = (0*(30+20))*((0*50)/2) = 0
x(P2) = (1*(30+20))*((0*(30+20))/2) = 50
x(P3) = 100
x(P10)=400

Il me faudrait donc une "formule général " qui me permet d'obtenir le niveau en fonction des autres paramètres pour qu'il ne soit pas fixe et que ce dernier soit aussi une variable qui me permettrait donc d'augmenter ou de réduire le nombre d'étages en fonction de mes besoins.
J'ai link des images avec ce poste pour mieux t'aider. ( Béta = rang et oméga = niveau ).

Messages postés
13254
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 novembre 2020
743
moi, j'essaierais en comptant le nombre de pièces que je peux encore mettre sur le niveau où je suis, et en passant au niveau suivant quand le niveau est rempli.
au niveau 0, tu peux mettre 5 pièces.
tu comptes combien de pièces tu mets.
quand ce compteur arrive à 0, tu passes au niveau suivant, et tu peux y mettre (5-niveau) pièces
Messages postés
2
Date d'inscription
mardi 10 mars 2020
Statut
Membre
Dernière intervention
10 mars 2020

Après toute une journée de casse tête je viens de m’apercevoir que mes formules ne sont pas correcte car on peut voir sur le tableau excel qu'il y a un décalage de 0.5 à chaque fois et 0.25 entre chaque fin de niveau. Alors que je voudrais un décalage de -0.5 arriver au niveau 2. Puis de 0.5 arriver au niveau 3
Esseyer la reciproque, comencé par le sommet et tu vas etre etonne