Connaitre le niveau d'une pyramide

Fermé
Azerty11 - 9 mars 2020 à 15:41
 Nauram - 18 avril 2020 à 11:43
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

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
9 mars 2020 à 16:40
bonjour, peux-tu déjà partager ce que tu as réalisé?
cela aidera peut-être à comprendre ce que tu veux obtenir.
0
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
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
9 mars 2020 à 19:47
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?
0
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.
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
10 mars 2020 à 13:42
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)
?
0
Utilisateur anonyme
10 mars 2020 à 14:41
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Azerty1111_9237 Messages postés 2 Date d'inscription mardi 10 mars 2020 Statut Membre Dernière intervention 10 mars 2020
Modifié le 10 mars 2020 à 14:44
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 ).

0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
10 mars 2020 à 15:29
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
0
Azerty1111_9237 Messages postés 2 Date d'inscription mardi 10 mars 2020 Statut Membre Dernière intervention 10 mars 2020
Modifié le 10 mars 2020 à 16:06
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
0
Esseyer la reciproque, comencé par le sommet et tu vas etre etonne
0