Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
Discussion fermée
#1 08-03-2014 19:36:11
- okayassu
- Membre
- Inscription : 08-03-2014
- Messages : 16
[AlgoBox] Affichage d'étoiles en pyramide
bonjour ,
dans le cadre de mes études je dois réaliser l'exercice suivant avec ALGOBOX :
"afficher une pyramide à n étages, n étant saisi par l'utilisateur,( ici avec 5 étages )"
*
***
*****
*******
*********
j'arrive à afficher les étoiles mais je n'arrive pas à afficher les espaces correctement car mes espaces ne diminuent pas à chaque ligne
***Algorithme lancé***
lignes pyramide?
Entrer nb : 5
1111*
1111***
1111*****
1111*******
1111*********
***Algorithme terminé***
mon algo:
1 VARIABLES
2 etoile EST_DU_TYPE NOMBRE
3 ligne EST_DU_TYPE NOMBRE
4 nb EST_DU_TYPE NOMBRE
5 espace EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7 AFFICHER "lignes pyramide?"
8 LIRE nb
9 POUR ligne ALLANT_DE 1 A 2*nb
10 DEBUT_POUR
11 SI (ligne%2!=0) ALORS
12 DEBUT_SI
13 POUR espace ALLANT_DE 1 A nb-1
14 DEBUT_POUR
15 AFFICHER "1"
16 FIN_POUR
17 POUR etoile ALLANT_DE 1 A ligne
18 DEBUT_POUR
19 AFFICHER "*"
20 FIN_POUR
21 FIN_SI
22 AFFICHER " "
23 FIN_POUR
24 FIN_ALGORITHME
je n'arrive donc pas à faire ma boucle espace correctement
quelqu’un pourrait il m'aider à résoudre ce "léger" problème ? :))
merci d'avance
Hors ligne
#2 08-03-2014 21:43:20
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : [AlgoBox] Affichage d'étoiles en pyramide
Bonsoir,
Bienvenue chez nous !
Qu'est-ce que tu cherches à obtenir exactement ?
L'affichage de quatre 1 ou ce qui est écrit au début :
*
***
*****
*******
*********
Si c'est bien cela que tu veux, alors voilà...
Les seuls espaces dont j'aie à me préoccuper sont ceux placés devant les étoiles.
Analyse.
Avec nb = 5 :
A la 5e ligne, j'ai 0 espace et 9 étoiles. 9 = 2*5-1 soit 2*ligne-1 : 0 espace c'est 5 - 5 soit 5 - ligne ou encore nb-ligne
A la 4e ligne, j'ai 1 espace et 7 étoiles. 7 = 2*4-1 soit 2*ligne-1 : 1 espace c'est 5 - 4 soit 5 - ligne ou encore nb-ligne
A la 3e ligne, j'ai 2 espaces et 5 étoiles. 5 = 2*3-1 soit 2*ligne-1 : 2 espaces c'est 5 - 3 soit 5 - ligne ou encore nb-ligne
A la 2e ligne, j'ai 3 espaces et 3 étoiles. 3 = 2*2-1 soit 2*ligne-1 : 3 espaces c'est 5 - 2 soit 5 - ligne ou encore nb-ligne
A la 1ere ligne, j'ai 4 espaces et 1 étoile. 1 = 2*1-1 soit 2*ligne-1 : 4 espaces c'est 5 - 1 soit 5 - ligne ou encore nb-ligne
MAIS les boucles Algobox ne peuvent avoir un indice qui décroît : sur cet exemple de 4 à 1...
Effectivement, seule solution : contourner cette restriction...
Je propose déclarer une 5e variable de de type nombre, je l'ai appelée fin.
Je cplace une boucle qui compte le nombre de lignes de 1 à nb
A l'intérieur de cette boucle ligne et avant la boucle espace, je lui affecte la valeur nb - ligne :
fin PREND_LA_VALEUR nb-ligne
Je place ensuite la boucle espace allant de 0 à fin, pour afficher (sans cocher retour à ligne) une espace à la fois
J'enchaine avec une boucle étoile allant de 1 à 2*ligne-1 qui affiche (sans cocher retour à ligne) une étoile à chaque tour
Enfin après les étoiles, j'affiche (en cochant retour à ligne cette fois) encore une espace.
Voilà ce que ça donne :
***Algorithme lancé***
Nombre de lignes de la Pyramide ?
Entrer nb : 8
*
***
*****
*******
*********
***********
*************
******************Algorithme terminé***
A l'intérieur de laquelle, j'ai 2 boucles consécutives :
J'espère avoir été clair...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#3 08-03-2014 22:02:06
- okayassu
- Membre
- Inscription : 08-03-2014
- Messages : 16
Re : [AlgoBox] Affichage d'étoiles en pyramide
bonjour et merci beaucoup pour l'explication :)
je n'aurai donc pas besoin de placer un modulo dans mon algo afin de n'afficher uniquement les lignes impaires?
je ne sais pas pourquoi mais j'arrive a comprendre plus facilement lorsque je n'afficherai que les lignes impaires ( va savoir pourquoi^^)
Dernière modification par okayassu (08-03-2014 22:04:47)
Hors ligne
#4 08-03-2014 22:10:22
- okayassu
- Membre
- Inscription : 08-03-2014
- Messages : 16
Re : [AlgoBox] Affichage d'étoiles en pyramide
et si avec mon algo il me sort toujours le même nombre d"espaces" ( correspondants aux 1 qui s'affichent) n'est il pas possible de juste diminuer le compteur des espaces de 1 à chaque ligne?
Hors ligne
#5 08-03-2014 22:45:00
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : [AlgoBox] Affichage d'étoiles en pyramide
Re,
Mon code :
etoile EST_DU_TYPE NOMBRE
ligne EST_DU_TYPE NOMBRE
nb EST_DU_TYPE NOMBRE
espace EST_DU_TYPE NOMBRE
nb_fin EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Nombre de lignes de la Pyramide ?"
LIRE nb
POUR ligne ALLANT_DE 1 A nb
DEBUT_POUR
nb_fin PREND_LA_VALEUR nb-ligne
POUR espace ALLANT_DE 0 A nb_fin
DEBUT_POUR
AFFICHER " "
FIN_POUR
POUR etoile ALLANT_DE 1 A 2*ligne-1
DEBUT_POUR
AFFICHER "*"
FIN_POUR
AFFICHER " "
FIN_POUR
FIN_ALGORITHME
Commence par faire fonctionner ce code.
Confronte ce qui est écrit avec mes explications et demande-toi pourquoi ton code ne donne par le résultat attendu...
Il y a des choses curieuses dans ton code :
- pourquoi doubler nb ?
- Pourquoi afficher des 1 ? (pas demandé)
- pourquoi ne traiter que les lignes impaires ?
Quel intérêt ? Mon code ne s'en occupe pas !
Si tu veux que le nombre d'espaces soit décroissant il faut que ta boucle
POUR espace ALLANT_DE 1 A nb-1
ait un indice de fin variable...
Ici, ce n'est pas le cas : tu demandes d'afficher invariablement, quel que soit le n° de ligne un nombre d'espaces égal à nb-1...
Et tu t'étonnes que le nombre d'espaces que tu vois affiché soit toujours le même ?
C'est le nb-1 qui est faux.
Ta boucle doit avoir un indice de fin dégressif...
Rideau pour moi pour ce soir...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#6 09-03-2014 00:19:04
- okayassu
- Membre
- Inscription : 08-03-2014
- Messages : 16
Re : [AlgoBox] Affichage d'étoiles en pyramide
dans ma tête je devais afficher uniquement les lignes impaires car :
ligne 1 = 1 étoile
ligne 2 = 2 étoiles
ligne 3= 3 étoiles
ligne 4= 4 étoiles
ligne 5= 5 étoiles
or la pyramide ne présente que les lignes 1,3,5 et pour avoir le nombre de lignes demandées puisque ne s'affiche qu'une ligne sur deux je devais doubler nb afin d afficher le nb de base ( j’espère que je suis claire ^^) sinon je n'affiche que la moitié des lignes.
les "1" représentent les espaces pour que je puisse bien les compter et me repérer lors de l'affichage, je les aurais changés en " " en rendant mon exo :)
mais en voyant ton code je comprends m’être bien compliqué la vie ^^
je te remercie sincèrement pour ton explication qui a su me faire comprendre qu'il est complètement inutile d'aller chercher midi à 14h !!
encore merci et excellente soirée à toi :))
Hors ligne
#7 09-03-2014 10:43:46
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : [AlgoBox] Affichage d'étoiles en pyramide
Bonjour,
Mon code souffre d'une petite imperfection : sur chaque ligne, il y a un espace supplémentaire.
Ainsi avec mon exemple de nb = 8 on peut voir que la ligne 8 commence par un espace...
Pour le rendre plus visible je remplace les espaces à afficher avant les étoiles par "!" :
***Algorithme lancé***
Nombre de lignes de la Pyramide ?
Entrer nb : 8
!!!!!!!!*
!!!!!!!***
!!!!!!*****
!!!!!*******
!!!!*********
!!!***********
!!*************
!******************Algorithme terminé***
Pour corriger cela, si on souhaite que la dernière ligne d'étoiles soit collée à la marge de gauche, alors
après la ligne nb_fin PREND-LA_VALEUR nb-ligne
il faut introduire un SI ALORS et placer la boucle espace dedans, comme montré par le code qui suit :
etoile EST_DU_TYPE NOMBRE
ligne EST_DU_TYPE NOMBRE
nb EST_DU_TYPE NOMBRE
espace EST_DU_TYPE NOMBRE
nb_fin EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Nombre de lignes de la Pyramide ?"
LIRE nb
POUR ligne ALLANT_DE 1 A nb
DEBUT_POUR
nb_fin PREND_LA_VALEUR nb-ligne
SI (ligne<nb) ALORS
DEBUT_SI
POUR espace ALLANT_DE 0 A nb_fin
DEBUT_POUR
AFFICHER " "
FIN_POUR
FIN_SI
POUR etoile ALLANT_DE 1 A 2*ligne-1
DEBUT_POUR
AFFICHER "*"
FIN_POUR
AFFICHER " "
FIN_POUR
FIN_ALGORITHME
Ainsi je n'exécute la boucle espace que si le nombre d'espaces est supérieur à 0.
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#8 09-03-2014 15:01:17
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : [AlgoBox] Affichage d'étoiles en pyramide
Re,
Autre méthode avec manipulation de chaînes de caractères.
Je vais construire complètement chaque ligne : espaces + caractères avant de l'afficher :
n EST_DU_TYPE NOMBRE
l EST_DU_TYPE NOMBRE
ch_esp EST_DU_TYPE CHAINE
ch_et EST_DU_TYPE CHAINE
car EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
AFFICHER "Nombre de lignes de la Pyramide ?"
LIRE n
POUR ligne ALLANT_DE 1 A 2*n-1
DEBUT_POUR
ch_esp PREND_LA_VALEUR ch_esp+" "
ch_et PREND_LA_VALEUR ch_et+"*"
FIN_POUR
POUR ligne ALLANT_DE 1 A n
DEBUT_POUR
car PREND_LA_VALEUR ch_esp.substr(0,n-l)+ch_et.substr(0,2*l-1)
AFFICHER car
FIN_POUR
FIN_ALGORITHME
n à la place de nb, l pour ligne, ch_esp pour chaîne d'espaces et ch_et pour chaîne d'étoiles
Lignes 10 à 14 :
* je construis une chaîne de 2*nb-1 espaces (il y en trop, mais ça n'a pas d'importance)
* je construis une chaîne de 2*nb-1 étoiles
Ligne 17 et 18
* dans la variable car je stocke, pour chaque ligne dégressivement, de nb-1 à 0 espaces suivies de 1 à 2*l-1 étoiles
* j'affiche la variable car et je coche Renvoi à la ligne
str est l'abréviation de l'anglais informatique string qui se traduit par chaîne.
substr est donc une sous-chaine extraite de la chaîne de référence ch_esp ou ch_et avec la syntaxe ch_esp.substr(position,longueur) et
ch_et.substr(position,longueur).
Sortie :
Nombre de lignes de la Pyramide ?
Entrer n : 11
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***Algorithme terminé***
Ne pas se fier (en tout cas chez moi) à l'affichage AlgoBox :
De la ligne 1 à la ligne 3, les étoiles blanches, après elles sont jaunes et plus épaisses, ce qui donne l'impression qu'il manque une espace à chaque ligne de 1 à 3.
@+
Dernière modification par yoshi (09-03-2014 16:32:21)
Arx Tarpeia Capitoli proxima...
Hors ligne
#9 20-11-2015 00:13:37
- kevh35
- Invité
Re : [AlgoBox] Affichage d'étoiles en pyramide
Ce code est faussé le bon est :
exemple Création Pyramide - 19.11.2015
1 VARIABLES
2 X EST_DU_TYPE NOMBRE
3 O EST_DU_TYPE NOMBRE
4 ligne EST_DU_TYPE NOMBRE
5 nb EST_DU_TYPE NOMBRE
6 nb_fin EST_DU_TYPE NOMBRE
7 DEBUT_ALGORITHME
8 AFFICHER "Hauteur de la pyramide (en ligne) ?"
9 LIRE nb
10 POUR ligne ALLANT_DE 0 A nb
11 DEBUT_POUR
12 nb_fin PREND_LA_VALEUR nb-ligne
13 POUR O ALLANT_DE 0 A nb_fin
14 DEBUT_POUR
15 AFFICHER "O"
16 FIN_POUR
17 POUR X ALLANT_DE 0 A 2*ligne-1
18 DEBUT_POUR
19 AFFICHER "X"
20 FIN_POUR
21 POUR O ALLANT_DE 0 A nb_fin
22 DEBUT_POUR
23 AFFICHER "O"
24 FIN_POUR
25 AFFICHER "O"
26 FIN_POUR
27 FIN_ALGORITHME
***Algorithme lancé***
Hauteur de la pyramide (en ligne) ?
Entrer nb : 10
OOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOXXOOOOOOOOOOO
OOOOOOOOOXXXXOOOOOOOOOO
OOOOOOOOXXXXXXOOOOOOOOO
OOOOOOOXXXXXXXXOOOOOOOO
OOOOOOXXXXXXXXXXOOOOOOO
OOOOOXXXXXXXXXXXXOOOOOO
OOOOXXXXXXXXXXXXXXOOOOO
OOOXXXXXXXXXXXXXXXXOOOO
OOXXXXXXXXXXXXXXXXXXOOO
OXXXXXXXXXXXXXXXXXXXXOO
***Algorithme terminé***
sa ne fais pas de déformation mais bien un carré quand on lance l'algorithme
#10 20-11-2015 15:44:34
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : [AlgoBox] Affichage d'étoiles en pyramide
Bonjour cher invité,
Ce code est faussé, le bon est :
Ah bon ???
Pourtant tu as écrit :
sa ne fais pas de déformation mais bien un carré quand on lance l'algorithme
Et l'énoncé demande :
"afficher une pyramide à n étages, n étant saisi par l'utilisateur,( ici avec 5 étages )"
*
***
*****
*******
*********
Une pyramide, pas un carré !"
"Ce code : "ce" désigne quel code ? celui proposé par l'auteur de la discussion ? Le mien ?
Celui de l'auteur de la discussion : il le savait, c'est pour ça qu'il a demandé de l'aide. Okayassu attendait aussi qu'on lui explique pourquoi son code ne fonctionnait pas comme attendu...
D'autre part, il ne fallait afficher que des étoiles...
Mon code ? Dans ce cas, les bras m'en tombent...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#11 15-01-2017 08:43:16
- halal229
- Invité
Re : [AlgoBox] Affichage d'étoiles en pyramide
bonjour! je voudrais savoir comment insérer des vides dans un algorithme de pyramide
#12 15-01-2017 10:33:51
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : [AlgoBox] Affichage d'étoiles en pyramide
Bonjour,
Par exemple pour le code du post #8 (aller y voir explications) :
n EST_DU_TYPE NOMBRE
l EST_DU_TYPE NOMBRE
ch_esp EST_DU_TYPE CHAINE
ch_et EST_DU_TYPE CHAINE
car EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
AFFICHER "Nombre de lignes de la Pyramide ?"
LIRE n
POUR ligne ALLANT_DE 1 A 2*n-1
DEBUT_POUR
ch_esp PREND_LA_VALEUR ch_esp+" "
ch_et PREND_LA_VALEUR ch_et+"* "
FIN_POUR
POUR l ALLANT_DE 1 A n
DEBUT_POUR
car PREND_LA_VALEUR ch_esp.substr(0,n-l)+ch_et.substr(0,2*l-1)
AFFICHER car
FIN_POUR
FIN_ALGORITHME
Lignes 8 et 18 : cocher la case Retour à la ligne.
Je n'ai modifié que la ligne 13 :
ch_et PREND_LA_VALEUR ch_et+"*" est devenue ch_et PREND_LA_VALEUR ch_et+"* ".
J'ai ajouté une espace après l'étoile.
Sortie pour 8 lignes :
***Algorithme lancé***
Nombre de lignes de la Pyramide ?
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * ****Algorithme terminé***
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#13 18-09-2020 21:55:35
- sarahschm
- Membre
- Inscription : 18-09-2020
- Messages : 1
Re : [AlgoBox] Affichage d'étoiles en pyramide
Bonjour,
comment est-ce que je fais la demi-pyramide
*
**
***
****
*****
******
*******
********
*********
**********
Hors ligne
#14 19-09-2020 11:53:48
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : [AlgoBox] Affichage d'étoiles en pyramide
Bonjour,
Une demi-pyramide c'est deux fois plus simple qu'une pyramide entière.
Ligne 1 -> 1 étoile
Ligne 2 -> 2 étoiles
Ligne 3 -> 3 étoiles
......
Ligne n -> n étoiles
VERSION ALGOBOX
Demander le nb de lignes (nb_lignes)
Initialiser la chaîne de caractères etoiles comme une chaîne
Déclarer le compteur i du numéro du tour de la noucle
Ecrire une boucle allant de i =1 à nb_lignes
A chaque itération rajouter une étoile à ta chaîne
Imprimer la chaîne etoiles obtenue (ne pas oublier de cocher le retour à la ligne)
Ce qui donne avec AlgoBox :
nb_lignes EST_DU_TYPE NOMBRE
etoiles EST_DU_TYPE CHAINE
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Nombre de lignes souhaité : "
LIRE nb_lignes
AFFICHER nb_lignes
POUR ligne ALLANT_DE 1 A nb_lignes
DEBUT_POUR
etoiles PREND_LA_VALEUR etoiles+"*"
AFFICHER etoiles
FIN_POUR
FIN_ALGORITHME
Attention
AFFICHER "Nombre de lignes souhaité : " --> ne pas cocher la case retour à la ligne
AFFICHER nb_lignes --> cocher la case retour à la ligne
AFFICHER etoiles --> cocher la case retour à la ligne
Sortie
***Algorithme lancé***
Nombre de lignes souhaité : 12
*
**
***
****
*****
******
*******
********
*********
**********
***********
***************Algorithme terminé***
VERSION Python :
etoiles=""
nb_lignes=int(input("Nombre de lignes souhaité : "))
for i in range(nb_lignes):
etoiles += "*"
print(etoiles)
Sortie
Nombre de lignes souhaité : 12
*
**
***
****
*****
******
*******
********
*********
**********
***********
************
Tu as tout compris ?
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
Pages : 1
Discussion fermée