C++ 我打印阵列时遇到问题
我不明白为什么打印不正确C++ 我打印阵列时遇到问题,c++,C++,我不明白为什么打印不正确 void countChars(ifstream& inData, string filename, int x[], int y[]) { char ch; int count = 0; for(int i=0; i < 58; i++) { x[i] = 0; } inData.open(filename.c_str()); while (inData >> ch)
void countChars(ifstream& inData, string filename, int x[], int y[])
{
char ch;
int count = 0;
for(int i=0; i < 58; i++)
{
x[i] = 0;
}
inData.open(filename.c_str());
while (inData >> ch)
{
count++;
if ((ch >= '!') && (ch <= 'Z'))
{
x[ch - '!']++;
}
}
for(int i=0; i < 58; i++)
{
y[i] = (x[i] / count * 100);
cout << y[i] << endl;
}
}
void countChars(ifstream&inData,字符串文件名,int x[],int y[])
{
char ch;
整数计数=0;
对于(int i=0;i<58;i++)
{
x[i]=0;
}
open(filename.c_str());
while(inData>>ch)
{
计数++;
如果((ch>=“!”)&&(ch数组x,y和count是整数数组。因此x[i]数组x,y和count是整数数组。因此x[i]在您的行中很明显
x数组中的每个字段都可能小于count,因此除法的结果总是小于1,因为您选择使用始终为0且0*100=仍然为0的整数。很明显,在您的行中
x数组中的每个字段都可能小于count,因此除法的结果总是小于1,因为您选择使用始终为0且0*100=仍然为0的整数。将x或count的数据类型更改为float或double。将x或count的数据类型更改为float或double。x[i]/count
是一个整数运算,由于整数是一个整数,而不是一个浮点数,因此结果为0。请重新排列您的公式,使其不会发生这种情况,或者将其中一个整数强制转换为浮点。@RetiredInja Agree。0或100除外。x[i]/count
是一个整数运算,由于整数是一个整数,而不是一个浮点数,因此结果为0。请重新排列您的公式,使其不会发生这种情况,或者将其中一个整数转换为浮点数。@RetiredInja Agree。预期为0或100,两者之间无任何内容。除非每个字符都相同且在范围内。@bvj:ya,但带有rea概率很小,除非每个字符都相同且在范围内。@bvj:ya,但概率很小
y[i] = (int)(x[i] * 100.0 / count + 0.5);
y[i] = (int)(x[i] * 100.0 / count + 0.5);