2017-10-28 3 views
-4

int 배열을 인수로받는 함수를 작성하려고 시도하고 배열의 데이터에 '*'가있는 막대 그래프를 작성합니다. 예를 들어배열의 데이터로부터 히스토그램 그리기

에 대한 INT의 편곡 [] {2,1,0,7,1,9}, 우리가 가야 :

histogram

가 어떻게이 코드를 작성해야합니까?

내 코드 : 모두가 동시에 인쇄 할 수 있기 때문에

다음
using namespace std; 

    int max = 0; 
    char znak = '*'; 

    void histo(int arr[], size_t size) { 
     for (int i = 0; i < size; i++) { 
      if (arr[i] > max) 
       max = arr[i]; 
     } 

//drawing histogram 

while (max > 0) { 
      for (int i = 0; i < size; i++) { 
       if (arr[i] >= max) { 
        cout << znak << " "; 
       } 
       else { 
        cout << " "; 
       } 
      } 
      max--; 
     } 

    } 


    int main() 
    { 
     int arr[]{2,1,0,7,1,9}; 
     size_t size = sizeof(arr)/sizeof(*arr); 
     histo(arr, size); 

    } 
+0

질문이 누락되었습니다. – DimChtz

+0

_ "그림 그리기에 문제가 있습니다"_ 유효한 문제 문이 아닙니다. 시도하고있는 것, 문제가있는 것, 예상하고있는 행동, 관찰하고있는 행동 등을 Google에 알려 주어야합니다. [도움말 센터] (http://stackoverflow.com)를 방문하십시오./help) 그리고 [좋은 질문을하는 법을 배웁니다] (http://stackoverflow.com/help/how-to-ask) 섹션을 읽으십시오. –

+0

죄송합니다. 내 잘못이야. 나는 그것을 편집했다. – gallrdm

답변

0

코드가

char znak = '*'; 

void histo(int arr[], size_t size) { 

    //finding the top point of this hystogram 
    int max = arr[0]; 
    for (int i = 0; i < size; i++) { 
     if (arr[i] > max) { 
      max = arr[i]; 
     } 
    } 
    int level = max; 
    int currSize =0; 
    while (level != 0) { 
     for (int i = 0; i < size; i++) { 
      currSize = arr[i]; 
      if (currSize >= level) { 
       cout << znak; 
      } 
      else 
      { 
       cout << " "; 
      } 
     } 
     level--; 

     cout << "\n"; 
    } 
} 
int main() 
{ 
    int arr[]{2,1,0,7,1,9}; 
    size_t size = sizeof(arr)/sizeof(*arr); 
    histo(arr, size); 

} 

를 작동해야하는 방법, 당신은 * 경우에만 인쇄되어 있는지 확인하려면 배열은 그 높이에서 인쇄하기로되어 있다고 말합니다.