2017-03-22 18 views
1

Ich habe eine Frage in Bezug auf C++ While-Schleife. Ich möchte ein ASCII-Art Balkendiagramm wie dieses zeichnen:Wie erstellt man ein ASCII-Art Balkendiagramm in C++?

 * 
*  * 
* * * 
* * * * 
* * * * 
* * * * 

Dafür muss ich die Ausgabe von unten füllen. Ich habe den folgenden Code, der eine einzelne Stange von „oben nach unten“ zieht, aber ich muß irgendwie den Raum über der Bar verlassen, so dass die anderen Bars gut passen:

#include<iostream> 

using namespace std; 

int main() 
{ 
    int a,n; 
    cout << "Enter a value in range 5-20 \n"; 
    cin >> a; 
    while (n<a) { 
     cout<<"* \n"; 
     n=n+1; 
    } 
} 

Wie bereits erwähnt, doesn dieser Code‘ Lassen Sie keinen Abstand über der Leiste, damit sie nicht mit anderen Balken übereinstimmt. Wie kann ich das lösen?

+0

auch wenn Sie den letzten Stern zuerst drucken, wird es in der ersten Zeile erscheinen ... – user463035818

+0

Können Sie bitte ein Beispiel mit Zahlen geben, so ist die Reihenfolge klarer? Ich verstehe nicht wirklich, was du gerade fragst. – BoBTFish

+3

Meinst du, dass dein Programm in der Konsole * höher * als die vorherige Ausgabe ausgegeben werden soll? Wenn ja, ist es unmöglich über 'cout' (was - kurz gesagt - strikt von links nach rechts, von oben nach unten Text-Stream erstellt). – Abstraction

Antwort

1

Standard C++ bietet keine Möglichkeit, das zu tun.

Angesichts der Anforderung, die Sie in den Kommentaren angezeigt haben (Sie möchten ein Balkendiagramm aus Zeichen erstellen), möchten Sie wahrscheinlich zunächst ein 2D-Zeichenfeld erstellen, das der Größe Ihrer Ausgabe entspricht werde kreieren.

  • Beginnen Sie, indem Sie es mit Leerzeichen füllen.
  • Füllen Sie dann die Sternchen aus, um Ihr Diagramm zu erstellen. Da es sich nur um ein Array handelt, können Sie auf Elemente in beliebiger Reihenfolge zugreifen.
  • Dann schreibe es auf den Bildschirm von links nach rechts, von oben nach unten.
0

kann ich sagen, versuchen, wie viele nicht von Zeilen in der Vollbild-Modus zu finden, Sie haben folgende Schritte aus:

  1. Druck auf den Bildschirm von oben nach unten mit Sternen.
  2. Dann zählen Sie diese Sterne, um eine Vorstellung zu bekommen, wie viele Zeilen (Zeile) auf Ihrem Bildschirm sind.

ex.

* 
* 
* 
* 

Das bedeutet, Sie haben 4 Zeilen.

  1. Dann nehmen Sie die Eingabe vom Benutzer.
  2. Jetzt subtrahieren Benutzereingabe von keiner der Zeilen. d. h. 4 Wenn der Benutzer Ihnen 2 als Eingabe gibt, füllen Sie den Bildschirm mit zwei Leerzeichen und dann mit 2 Sternen.
Verwandte Themen