2017-03-22 21 views
1

C++ whileループに関する質問があります。私は次のようなASCII-Art棒グラフを描きたいと思っています:C++でASCII-Art棒グラフを作成するには?

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

このために私は以下の出力を記入する必要があります。私は「上から下」から1つのバーを描画し、次のコードを持っているが、私は他のバーがうまく収まるように何とかバーの上のスペースを残しておく必要があります:

#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; 
    } 
} 

述べたように、このコードは」doesnのバーの上にスペースを残すので、他のバーと整列しません。これをどうすれば解決できますか?

+0

最後の星印を最初に印刷しても、最初の行に表示されます... – user463035818

+0

数字で例を挙げてください。順序がより明確ですか?私はあなたが今尋ねていることを本当に理解していません。 – BoBTFish

+3

あなたのプログラムを以前の出力よりもコンソール*上位*に出力させたいのですか?もしそうなら、 'cout'(長いストーリーの短い - 厳密には左から右へ、上から下のテキストストリームを作成する)では不可能です。 – Abstraction

答えて

1

標準C++ではこれを行う方法がありません。

コメントに表示された要件(文字から棒グラフを作成する)が必要な場合は、まず出力のサイズの2次元配列を作成します作成する予定です。

  • まずスペース文字で入力します。
  • 次に、チャートを作成するために必要な場所にアスタリスクを記入します。単なる配列なので、好きな順序で要素にアクセスできます。
  • 次に、左から右、上から下に画面に書き出します。
0

私はあなたが は、次の手順に従い持っていないどのように多くの何のあなたのフルスクリーンモードで行の検索しようと言うことができます:星に上から下へ画面を

  1. 印刷します。
  2. 次に、それらの星を数えて、画面上の行(行)の数を確認します。

ex。

* 
* 
* 
* 

これは、4行あることを意味します。

  1. 次に、ユーザーからの入力を受け取ります。
  2. ここで、行の数からユーザー入力を減算します。つまり、4 です。ユーザーが入力として2を入力した場合は、画面に2つのスペースと2つの星を入力します。
関連する問題