【发布时间】:2013-12-03 15:16:17
【问题描述】:
我不明白为什么这不能正确打印出来。
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 个 0。我不明白为什么它不能正确打印出来,我重新阅读了有关数组的章节,但找不到任何关于此类问题的信息。我尝试先搜索,但我什至不确定我应该搜索哪些术语来解决这个问题。
【问题讨论】:
-
x[i] / count是一个整数运算,结果为 0,因为整数是整数,而不是浮点数。重新排列你的公式,这样就不会发生这种情况,或者将其中一个整数转换为浮点数。 -
@RetiredNinja 同意。预计为 0 或 100,并且介于两者之间。
标签: c++