我打印出一个数组有问题

时间:2013-12-03 07:02:37

标签: 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)
    {
        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。我不明白为什么它没有正确打印出来,我重读了数组上的章节,找不到任何关于这类问题的内容。我试图先搜索,但我甚至不确定我应该用这个问题搜索哪些术语。

4 个答案:

答案 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);