Drucken Sie eine ASCII-Art-Diamant - Stapelüberlauf

Wie es Hausaufgaben ist, werde ich empfehlen nur ein paar Schritte, die Sie wünschen konnte, und lassen Sie den Spaß eigentlich schreiben es haben :-)

So einen Diamanten zu drucken, gehe ich davon aus es so etwas wie dieses werden (Beispiel mit 5 Zeilen - die Anzahl der Zeilen muss ungerade sein)







  1. Schreibe eine Funktion, die die Anzahl von Leerzeichen zu drucken berechnet, angesichts der Gesamtzahl von Zeilen und die aktuelle Zeilennummer
  2. Schreiben Sie eine ähnliche Funktion für die Anzahl der Sterne
  3. Verwenden Sie diese beiden Funktionen die Diamanten zu drucken, Zeile für Zeile.

Hier ist, wie ich es tun würde. Untersuchen einige Beispiel Diamanten (5, 7 und 9 Zeilen):

Die erste Zeile besteht auf einigen Räumen und einigen Sternen. Wie viele? Anzahl der Sterne ist immer eine, die Anzahl der Räume auf die Anzahl der Zeilen hängt gewünscht:

So ist die anfängliche Anzahl der Räume ist (#lines - 1) / 2, abgerundet.

Die andere Sache, werden Sie feststellen, dass bei jeder nachfolgenden Zeile, die Anzahl der Räume, die durch ein und die Anzahl der Sterne erhöht sich um zwei reduziert.

Der einzige andere Sonderfall ist eine gerade Anzahl von Zeilen, in denen Sie die mittlere Linie duplizieren sollten.







Mit Blick auf dem Code, sie ist ganz in der Nähe, man muss nur einstellen, wo die Schleife Aussagen in Bezug auf sind, was gedruckt ist wird. Mit anderen Worten ist die äußeree Schleife für Linien, dann eine innere Schleife für Räume, die durch eine andere innere Schleife gefolgt Sterne.

Ich schrieb ein Testprogramm in Python (siehe unten), aber Sie sollten wirklich nicht Python-Syntax zu verstehen haben (das Programm ist viel größer, als ich ursprünglich dachte, es wäre) aus dieser Antwort etwas Gebrauch zu erhalten, also hier einige vereinfachte Pseudocode . Sie sollten immer hinsetzen und aus dem Problem denken, bevor Sie das Schreiben von Code beginnen. Dies wird Ihnen helfen, die Fähigkeiten zu entwickeln, die Sie auch in Zukunft tun wird.

Schließlich ist hier die ich Python-Code verwendet, um den Pseudo-Code zu testen (nicht wirklich Sie den Code geben, da Sie C benötigen ++):

und hier ist ein Beispiel Lauf:

Andere Leute sind darauf hindeutet, dass Sie es entwerfen „bottom up“, durch nützlich Subroutinen zu entwickeln.

Dadurch zeigt, dass es nützlich wäre, die Subroutinen, wie die folgenden haben:

  • getNumberOfLinesFromUser
  • getHalfOf
  • calculateAsterisks
  • printAsterisks

Nehmen wir ein Beispiel. Es sei angenommen, Höhe von Diamant-Box ist 9. Abbildung zeigt, wie folgend anzuordnen ‚*****‘ in x-y-Koordinaten.

Zunächst müssen wir Ursprung zum centrer von Diamanten bewegen, wie folgt.

Finden Absolutwerte aller Koordinaten. Dann wird die Zahl wie folgt.

Abbildung oben enthält Lösung des Problems.

Nun nehmen Sie einen allgemeinen Fall. Dann haben wir zu







In Verbindung stehende Artikel