我无法弄清楚为什么这不能正确打印出来。
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;
}
}
它应该打印出每个角色组成的文件的%。打印出来的是58 0s。我不明白为什么它没有正确打印出来,我重读了数组上的章节,找不到任何关于这类问题的内容。我试图先搜索,但我甚至不确定我应该用这个问题搜索哪些术语。
答案 0 :(得分:1)
数组x,y和count是整数数组。因此x [i]&lt;总是计数,除法值总是0.所以将x,y,count改为double ..
答案 1 :(得分:1)
y[i] = x[i] / count * 100
y[i] = x[i] / count * 100
你的x-Array中的每个字段都可能小于count,因此你的除法结果总是低于1,因为你选择使用始终为0且0 * 100 =仍为0的整数。
答案 2 :(得分:1)
将x或count的数据类型更改为float或double。
答案 3 :(得分:1)
y[i] = (int)(x[i] * 100.0 / count + 0.5);