Imprimer un diamant d'art ASCII - Stack Overflow

Comme il est des devoirs, je vais vous recommander quelques mesures que vous pouvez prendre, et que vous avez le plaisir d'écrire réellement :-)

Donc, pour imprimer un diamant, je suppose que ce sera quelque chose comme ça (par exemple avec 5 lignes - le nombre de lignes doit être impair)

  1. Ecrire une fonction qui calcule le nombre de places à imprimer, compte tenu du nombre total de lignes et le numéro de ligne en cours
  2. Ecrire une fonction similaire pour le nombre d'astérisques
  3. Utilisez ces deux fonctions pour imprimer le diamant, ligne par ligne.

Voici comment je le ferais. Examiner des diamants de l'échantillon (5, 7 et 9 lignes):

La première ligne se compose de quelques espaces et quelques étoiles. Combien? Nombre d'étoiles est toujours l'un, le nombre de places dépend du nombre de lignes souhaité:

Ainsi, le nombre initial d'espaces est (#lines - 1) / 2, arrondi vers le bas.

L'autre chose que vous remarquerez est que sur chaque ligne suivante, le nombre de places réduit par un et le nombre d'étoiles augmente de deux.

Le seul autre cas particulier est un nombre pair de lignes où vous devez dupliquer la ligne médiane.

En regardant votre code, vous êtes très proche, il vous suffit d'ajuster où les instructions de boucle sont en relation avec ce qui est en cours d'impression. En d'autres termes, la boucle externe est pour les lignes, puis une boucle interne pour espaces suivie par une autre boucle interne pour étoiles.

J'ai écrit un programme de test en Python (voir ci-dessous), mais vous devriez vraiment pas à comprendre la syntaxe Python (ce programme est beaucoup plus grand que je ne le pensais que ce serait) pour obtenir une certaine utilisation de cette réponse si voici quelques pseudo-code simplifié . Vous devriez toujours vous asseoir et de réfléchir sur le problème avant de commencer à écrire du code. Cela vous aidera à développer les compétences qui vous fera bien dans l'avenir.

Enfin, voici le code Python je tester le pseudo-code (pas vraiment vous donner le code car vous avez besoin C ++):

et est ici une course exemple:

D'autres personnes suggèrent que vous le design « bottom up », en développant des sous-routines utiles.

Faire cela montre qu'il serait utile d'avoir les sous-routines telles que les suivantes:

  • getNumberOfLinesFromUser
  • getHalfOf
  • calculateAsterisks
  • printAsterisks

Prenons un exemple. Supposons que la hauteur de la boîte de diamant est 9. La figure suivante montre comment organiser « ***** » en coordonnées x-y.

D'abord, nous devons passer à l'origine du diamant comme centrer suit.

Trouvez des valeurs absolues de toutes les coordonnées. Ensuite, la figure sera comme suit.

Au-dessus de la figure contient une solution à un problème.

Maintenant, prenez un cas général. Ensuite, nous devons

Articles Liés