C正确计算和

时间:2013-10-21 14:09:09

标签: c++ sum

每次用户输入一个整数,直到输入负数或非整数,我都能得到总和。问题是我的总和计算是关闭的。 I.E用户投入1000;总和输出1111,然后用户输入2000,它加起来3333.任何建议都赞赏。我仍然会尝试编码。

   #include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int j , i = 0, k = 0,number;
double sum = 0;
cout << "Enter Positive integer number: ";
while(cin >> number)
{

    cout << endl;
    if( number < 0)//test if the number is negative
    {
        cout << "Ending program since user has input a negative number" <<endl;
        break;
    }
    int temp = number;
    int p = 1;
    while( temp > 0) //counting number of digits
    {
        sum = sum+temp; //Sum attempt.
        temp /= 10;
        p *= 10;
        i++;

    }

        cout << sum << endl;

    j = i % 3;
    p /= 10;
    while( i > 0 )//display integer number with 1000 seperator
    {
        //this is giving me error
        cout << char ((number/p) +'0');
        number %= p;
        p /= 10;
        i--;
        k++;
        j--;
        if ((k % 3 == 0 && i > 0)||(j == 0 && i > 2) )
        {
            cout <<",";
            k = 0;
        }
    }
    cout << endl << endl;
    cout << "This program will exit if you input any non-integer characters\n";
    cout << "Enter another integer number: ";
}

return 0;
    }

1 个答案:

答案 0 :(得分:0)

看起来你正试图输出一个整数,并在1000边界插入逗号。即:1000000将显示为1,000,000。

在这种情况下,接近它的最简单方法可能不涉及数学,而只是获取int的字符串表示(例如atoi())并计算。从后面开始,向前计数三个字符,插入一个逗号,重复直到你的字符串用完为止。

字符串处理的细节留给读者练习 - 看起来这毕竟是他的作业。 ; - )