我正在尝试编写一个以int数组作为参数的函数,并为数组中的数据写一个带'*'的直方图。
例如,对于int arr [] {2,1,0,7,1,9},我们应该得到:
我该如何编写此代码?
我的代码:
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 :(得分: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);
}
由于所有内容必须同时打印,因此您需要确保仅在阵列显示应该在该高度打印时打印*。