Dada una array de enteros, imprime el histograma de los valores de la array.
Ejemplos:
Input : 0 11 2 13 5 12 8 11 12 9 Output : 13 | x 12 | x x x 11 | x x x x x 10 | x x x x x 9 | x x x x x x 8 | x x x x x x x 7 | x x x x x x x 6 | x x x x x x x 5 | x x x x x x x x 4 | x x x x x x x x 3 | x x x x x x x x 2 | x x x x x x x x x 1 | x x x x x x x x x 0 | x x x x x x x x x x --------------------------------------- 0 11 2 13 5 12 8 11 12 9 Input : 10 9 12 4 5 2 8 5 3 1 Output : 12 | x 11 | x 10 | x x 9 | x x x 8 | x x x x 7 | x x x x 6 | x x x x 5 | x x x x x x 4 | x x x x x x x 3 | x x x x x x x x 2 | x x x x x x x x x 1 | x x x x x x x x x x 0 | x x x x x x x x x x --------------------------------------- 10 9 12 4 5 2 8 5 3 1
La idea es imprimir el histograma dado fila por fila. Para cada elemento, verificamos si es mayor o igual que la fila actual. En caso afirmativo, coloque una ‘x’ para ese elemento. De lo contrario ponemos un espacio.
// CPP program to make histogram of an array #include <bits/stdc++.h> using namespace std; void printHistogram(int arr[], int n) { int maxEle = *max_element(arr, arr + n); for (int i = maxEle; i >= 0; i--) { cout.width(2); cout << right << i << " | "; for (int j = 0; j < n; j++) { // if array of element is greater // then array it print x if (arr[j] >= i) cout << " x "; // else print blank spaces else cout << " "; } cout << "\n"; } // print last line denoted by ---- for (int i = 0; i < n + 3; i++) cout << "---"; cout << "\n"; cout << " "; for (int i = 0; i < n; i++) { cout.width(2); // width for a number cout << right << arr[i] << " "; } } // Driver code int main() { int arr[10] = { 10, 9, 12, 4, 5, 2, 8, 5, 3, 1 }; int n = sizeof(arr) / sizeof(arr[0]); printHistogram(arr, n); return 0; }
Producción:
12 | x 11 | x 10 | x x 9 | x x x 8 | x x x x 7 | x x x x 6 | x x x x 5 | x x x x x x 4 | x x x x x x x 3 | x x x x x x x x 2 | x x x x x x x x x 1 | x x x x x x x x x x 0 | x x x x x x x x x x --------------------------------------- 10 9 12 4 5 2 8 5 3 1
Este artículo es una contribución de Devanshu Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA