C++ c++;规范化数组

C++ c++;规范化数组,c++,arrays,normalization,C++,Arrays,Normalization,我需要规范化一个数组,我找到可以是任何数字的最大值。我必须用cout输出这个数字,并用‘x’表示多少次。问题是我最多只能吃60倍。如果我的最大值是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; DieFa

我需要规范化一个数组,我找到可以是任何数字的最大值。我必须用cout输出这个数字,并用‘x’表示多少次。问题是我最多只能吃60倍。如果我的最大值是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 
void RollDice(){
int DieFace[6];
int Rolls=0;
int Seed=0;
int随机=0;
int i=0;
char X='X';
模具表面[0]=0;
模具面[1]=0;
模具面[2]=0;
模具表面[3]=0;
模具表面[4]=0;
模具面[5]=0;
cout>Rolls;//获取Rolls
cout Seed;//获取种子

可以说你的
Max
是500。如果你把它乘以60,然后除以500,结果正好是60。如果你有另一个值是Max(250)的一半,乘以60得到15000,然后除以500得到30

因此,简单的解决方案是:将所有结果乘以期望的最大值,然后除以实际的最大值


您不需要使用
double
,即使一条注释声称是这样。
500*60
不能溢出。但是使用
long
可能是明智的,因为使用
int
将其切分得很近。
600*60
可能会溢出int(>32767)但是一个
长的
会达到20亿。

得到最高数量的DieFace,如果它高于你的最大值,你必须缩小em(例如这样):

int Max=0;
对于(int i=0;i<6;i++){
如果(蝶面[i]>Max)Max=蝶面[i];
}

对于(int i=0;i[OT],你可以简化你的
,否则如果通过
DieFace[Random-1]++;
来规范化,你必须使用
float
/
double
,否则你的int数组中只有0/1。@Jarod42所以只要把它改成double DieFace[6]可以解决这个问题吗?那么我该如何规范化数组。请明确指定要打印最大的部分作为60的因子,然后按字面上的“x”打印该因子。例如,如果max=500,int factor=500/60=8,例如(int I=0;Ixxxxxxxx>
))是的,我相信你是对的,我想这个问题需要澄清一下。
    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;
    }