Kams31
-
Modifié le 30 juil. 2018 à 08:43
Whismeril
Messages postés18282Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention21 mars 2023
-
31 juil. 2018 à 13:31
Bonjour,
un peu d'aide s'il vous plait....
Enoncé:
Les habitants d'Algoréa aiment bien ériger des statues et les poser sur des socles majestueux. Selon les dimensions de la statue, le socle doit être plus ou moins haut et offrir une surface plus ou moins grande pour y poser la statue. Cependant, les constructeurs de statues ont souvent du mal à estimer la quantité de béton nécessaire à la construction de chaque socle. Vous souhaitez écrire un programme pour les aider.
Ce que doit faire votre programme :
Voici un exemple de socle :
Pyramide formée de 3 marches carrées de tailles décroissantes
Un socle est ainsi constitué d'étages, chaque étage ayant une hauteur égale à une unité et une base carrée. Le côté des carrés diminue de une unité à chaque étage.
Votre programme doit lire deux entiers, représentant respectivement la largeur du socle au niveau du sol et la largeur du socle au niveau de la face supérieure du socle. Il doit ensuite calculer et afficher le volume du socle.
Exemple
entrée :
7
3
sortie :
135
Commentaires
Le volume du premier étage est 7 × 7 = 49, le volume du second est 6 × 6 = 36, etc. et le volume du dernier étage est 3 × 3 = 9. Le volume total est donc : 7 × 7 + 6 × 6 + 5 × 5 + 4 × 4 + 3 × 3 = 135.
Affecter 0 à volumeTotal
Demander largeur
Demander longueur
nbLoop = longueur - largeur + 1
Affecter 0 à i
Tant que i est inférieur à nbLoop:
volumeTotal = Longueur X largeur X hauteur
i augmente de 1
largeur diminue de 1
Afficher volumeTotal
Whismeril
Messages postés18282Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention21 mars 2023621 31 juil. 2018 à 13:22
C’est ça
Maintenant regarde ton code, s’il fait bien ces instructions dans cet ordre
Whismeril
Messages postés18282Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention21 mars 2023621 29 juil. 2018 à 23:37
Bonsoir
déjà, il y a une incohérence dans ton énoncé, entre
Pyramide formée de 3 marches carrées de tailles décroissantes
et
7 × 7 + 6 × 6 + 5 × 5 + 4 × 4 + 3 × 3
y'a 5 étages et pas 3.
Je suppose que la formule mathématique est ce qu'il faut faire, puisque chaque étage diminue de 1, c'est donc qu'il me paraît le plus proche du reste de l'énoncé.
Ton code, il fait
volumeTotal = 7*3 + 3*3
volumeTotal = 7*3 + 3*3
volumeTotal = 7*3 + 3*3
mais Man, je comprends pas ce que tu me dis de rajouter.... Explique moi s'il te plait... J'aimerais comprendre..
jordane45
Messages postés37261Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 mars 2023341 30 juil. 2018 à 22:01
On ne te demande pas d'ajouter quoi que ce soit......
On te dit de prendre le code TEL QUEL.. et de le TESTER.
Puis de nous indiquer exactement ce que ça t'affiche....
On ne peut pas te le dire autrement.... c'est pourtant du bon français bien rédigé......
jordane45
Messages postés37261Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 mars 2023341 Modifié le 30 juil. 2018 à 22:51
Whismeril
Messages postés18282Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention21 mars 2023621 31 juil. 2018 à 13:31
De rien.
Si ça répond à tout, merci de marquer oe sujet résolu en cliquant sur la roue dentée tout en haut du sujet
Pour les print avec str().
Si tu mets du texte print l’affiche
Si tu mets un nombre print le convertit en texte en l’afficher
Mais si tu mets les 2, ça n’est ni l’un ni l’autre, du coup ça plante, c’est pourquoi j’ai converti le nombre en texte avec str()
Vous n’avez pas trouvé la réponse que vous recherchez ?
jordane45
Messages postés37261Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 mars 2023341 30 juil. 2018 à 08:57
Bonjour,
Pour calculer le nombre de marches, il te suffit de faire la soustraction de la largeur de ta base et celle de ta dernière marche.
Ensuite, une boucle qui décrémente de 1 la base à chaque tour
Le calcul du volume
et le tour est joué.
Un truc du genre
volumeTotal = 0
largeurSol = int(input()) #7
largeurSup = int(input()) #3
#Nombre de marches : 5 = 7 - 3 + 1
nbLoop = int(largeurSol - largeurSup + 1)
i = 0
while i < nbLoop: # Tant que i est inférieure à nbLoop
largeurSol = largeurSol - i # ou largeurSol -= i
volumeTotal += ( largeurSol * largeurSol * 1) # Volume = Longueur X largeur X hauteur
i += 1 # On ajoute 1 à i
print(volumeTotal)
premier tour ( i = 0 )
volumeTotal = 7 * 7 * 1 => 49
i = 1
volumeTotal = 49 + ( 6 * 6 * 1 ) = 85
i = 2
volumeTotal = 85 + ( 5 * 5 * 1 ) = 110
..etc
NB: je ne code pas en Python, il se peut donc qu'il y ait des erreurs dans le code...
Whismeril
Messages postés18282Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention21 mars 2023621 30 juil. 2018 à 23:26
Maintenant que Jordane a débugé son code c'est trop facile ;)
Ce que je t'ai fait faire est d'afficher toutes les valeurs au fur est à mesure du code.
L'idée est de voir ce qui ne se passe pas comme prévu, identifier le symptôme, pour pouvoir corrigé l'erreur.
Je sais pas trop, le largeur sol il est aléatoire... je vois pas comment je peux le faire débuter à 7...
Whismeril
Messages postés18282Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention21 mars 2023621 30 juil. 2018 à 23:52
Ha non, à ce moment là ça n’est pas aléatoire, tu saisies 7, le calcul doit donc commencer à 7.
Si tu saisis une autre valeur, le calcul doit,commencer à cette valeur.
31 juil. 2018 à 10:59
31 juil. 2018 à 13:22
Maintenant regarde ton code, s’il fait bien ces instructions dans cet ordre
31 juil. 2018 à 13:25