2017-10-28 3 views
-4

Ich versuche eine Funktion zu schreiben, die ein int-Array als Argument verwendet und ein Histogramm mit '*' für Daten im Array schreibt.Histogramm aus Daten im Array zeichnen

Zum Beispiel für int arr [] {2,1,0,7,1,9}, sollten wir bekommen:

histogram

Wie soll ich diesen Code schreiben?

Mein Code:

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

Ihnen fehlt die Frage ... – DimChtz

+0

_ "Ich habe ein Problem mit der Zeichnung Histogramm" _ ist keine gültige Problemstellung. Sie müssen uns mitteilen, was Sie gerade versuchen, mit welchen Problemen Sie zu tun haben, welches Verhalten Sie erwarten, welches Verhalten Sie beobachten usw. Bitte besuchen Sie die [Hilfe] (http://stackoverflow.com)/help) und lies den Abschnitt [wie stelle ich eine gute Frage] (http://stackoverflow.com/help/how-to-ask). –

+0

Entschuldigung. mein Fehler. Ich habe es bearbeitet. – gallrdm

Antwort

0

Hier ist, wie der Code sollte

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); 

} 

arbeiten, weil alles, was den Druck zur gleichen Zeit werden muss, möchten Sie die sicherstellen * wird nur gedruckt, wenn Das Array sagt, dass es in dieser Höhe drucken soll.