0

每次用户输入整数时,我都可以得到总和,直到输入负数或非整数。问题是我的总和计算已关闭。IE用户投入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;
    }
4

1 回答 1

0

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

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

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

于 2013-10-21T14:27:24.503 回答