2017-03-22 2 views
1

C++ while 루프에 관한 질문이 있습니다. 다음과 같은 ASCII- 아트 막 대형 차트를 그려야합니다.C++에서 ASCII- 미술 막대 차트를 만드는 방법은 무엇입니까?

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

이 내용은 아래의 내용을 채워야합니다. 나는 "위에서 아래로"에서 하나의 줄을 그립니다 다음과 같은 코드를 가지고,하지만 난 다른 막대가 잘 맞도록 어떻게 든 막대 위의 공간을 떠날 필요 : 언급 한 바와 같이

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

이 코드는 '아무튼 막대 위에 공간을 두지 않아서 다른 막대와 정렬되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

마지막 별표를 먼저 인쇄하더라도 첫 번째 줄에 나타납니다 ... – user463035818

+0

숫자가있는 예를 들어 주시겠습니까? 순서가 더 명확합니까? 나는 당신이 지금 무엇을 요구하고 있는지 정말로 이해하지 못합니다. – BoBTFish

+3

프로그램이 이전 출력보다 콘솔 * 상위 *에서 출력되도록 하시겠습니까? 그렇다면'cout' (긴 이야기는 짧게 - 정확히 왼쪽에서 오른쪽, 위에서 아래로의 텍스트 스트림을 만듭니다)을 통해 불가능합니다. – Abstraction

답변

1

표준 C++은 그렇게 할 수있는 방법을 제공하지 않습니다.

(문자로 된 막대 그래프를 작성하려는) 주석에 표시된 요구 사항을 감안할 때, 사용자가 원하는 출력의 크기로 2D 배열을 작성하는 것으로 시작하십시오. 만들려고합니다.

  • 공백으로 시작하십시오.
  • 그런 다음 차트를 작성하는 데 필요한 곳에 별표를 채 웁니다. 배열 일 뿐이므로 원하는 순서대로 요소에 액세스 할 수 있습니다.
  • 그런 다음 왼쪽에서 오른쪽, 위에서 아래로 화면에 씁니다.
0

난 당신이 다음 단계에 따라이 없다 얼마나 많은에는 전체 화면 모드에서 행 찾으려고 말할 수있다 : 별 위에서 아래로 화면을

  1. 인쇄.
  2. 그런 다음 별표를 세어 화면에 몇 줄 (행)인지 생각하십시오.

ex.

* 
* 
* 
* 

이것은 네 개의 행이 있음을 의미합니다.

  1. 그런 다음 사용자로부터 입력을받습니다.
  2. 이제 행의 수에서 사용자 입력을 뺍니다. 즉 4 입니다. 사용자가 입력란으로 2를 입력하면 화면에 공백 두 개를 입력 한 다음 별 2 개를 입력하십시오.
관련 문제