【发布时间】:2021-07-02 03:07:31
【问题描述】:
我正在编写一个代码,它使用一个函数来生成一个长度为 10 的随机数组,其中填充了 1 到 20 之间的随机整数。然后它将打印出一个星号直方图,该直方图的数量乘以在数组中打印的数字。
这是一个例子:
Element Value Histogram
0 12 ***********
1 5 ******
2 3 ***
etc...
问题是我不知道如何让代码打印出星号的数量以及如何将它们与整数出现的次数相关联。我尝试的是几个用于遍历数组和值的 for 循环,以找出已创建的值。然后还有另一个 for 循环,用于计算整数出现的次数。我知道最后的法庭陈述中有错误。我不确定如何将该部分放入“图表”中。我可以肯定的是,应该有一个 for 循环,用于在另一个 for 循环中打印星号,检查数组的数量。
这是我的代码:
#include <iostream>
#include <iomanip>
#include<ctime>
using namespace std;
void initialize(int arr[]);
int main(){
int arr[10];
initialize(arr);
cout<<endl;
cout<< left <<setw(10)<< left << "Element"<< right<< setw(10) << "Value" << right<<setw(20)<<"Histogram "<< right<<endl;
cout<<" " << endl;
int x;
for(int i = 0; i < 10; i++){
for(x = 1; x <= 20; x++){
if(x != arr[i])
x++;
}
for(int i = 0; i < x; i++){
cout<<"*";
}
//exuse the error message, I know it is inncorrect
cout<< left <<setw(10)<< left << i << right<< setw(10) << x << right<<setw(20)<<for(int i = 0; i < x; i++){
cout<<"*";
}<< right<<endl;
}
return 0;
}
void initialize(int arr[]){
for(int i = 0; i < 10; i++){
arr[i] = rand() % (20) + 1;
}
for(int i = 0; i < 10; i++){
cout<< arr[i]<<" ";
}
}
【问题讨论】:
-
这是地图的用例。您将整数存储为键,将出现次数存储为值。 en.cppreference.com/w/cpp/container/map
-
我可以肯定的是,应该有一个用于打印星号的 for 循环——这当然不是真的。
std::cout << std:::string(count, '*');,其中count是星号的数量。这使您的程序的解决方案大约是 2 行for循环,可能是单行for循环。