C++ 规范化数组
c++ normalize an array
>我需要规范化一个数组,我找到可以是任何数字的最大值。我必须使用 cout 输出这个数字并将其表示为"x"多少次。问题是我最多只能有 60 个 x。如果我的最大值是 500,我需要将其显示为 60 'x' 并将我的整个数组规范化为该数组。我编写的代码如下。
void RollDice() {
int DieFace[6];
int Rolls = 0;
int Seed = 0;
int Random = 0;
int i = 0;
char X = 'x';
DieFace[0] = 0;
DieFace[1] = 0;
DieFace[2] = 0;
DieFace[3] = 0;
DieFace[4] = 0;
DieFace[5] = 0;
cout << "Enter number of times dice will be rolled. "; //output to user
cin >> Rolls; //get rolls
cout << endl;
cout << "Enter desired seed number. "; //output to user
cin >> Seed; //get seed
cout << endl;
srand(Seed);
for (int i = 0; i < Rolls; ++i) { //loop for RNG
Random = 1 + rand() % 6;
// boolean to get Face
if (Random == 1)
DieFace[0] = DieFace[0] + 1;
else if (Random == 2)
DieFace[1] = DieFace[1] + 1;
else if (Random == 3)
DieFace[2] = DieFace[2] + 1;
else if (Random == 4)
DieFace[3] = DieFace[3] + 1;
else if (Random == 5)
DieFace[4] = DieFace[4] + 1;
else if (Random == 6)
DieFace[5] = DieFace[5] + 1;
}
for (i = 0; i < 6; i++) {
cout << i + 1 << " Was Rolled: " << DieFace[i] << " Times." << endl;
}
cout << endl;
int Max = std::max({DieFace[0], DieFace[1], DieFace[2], DieFace[3], DieFace[4], DieFace[5] }); // find max value
获得最高数量的DieFace,如果它高于最大值,则必须缩小em(例如,像这样):
int Max=0;
for (int i = 0; i < 6; i++) {
if (DieFace[i]>Max) Max = DieFace[i];
}
for ( int i=0;i<6;i++) {
cout << i << ":" ;
int numHashes = DieFace[i];
if (Max > 60) {
numHashes = DieFace[i]*60/Max;
}
for (int j=0;j<numHashes;j++)
cout << "#";
cout << endl;
}
假设您的Max
是 500。如果将其乘以 60,然后除以 500,则结果正好为 60。如果您有另一个值是最大值 (250) 的一半,则乘以 60 得到 15000,然后除以 500 得到 30。
所以简单的解决方案是:将所有结果乘以所需的最大值,然后除以实际最大值。
你不需要double
,即使评论声称如此。 500*60
不能溢出。不过,使用long
可能是明智的,因为使用int
会将其切得相当接近。 600*60
可能会溢出一个 int (>32767),但一个long
会溢出 20 亿。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '