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()たとえば) を取得し、それをカウントすることです。後ろから3文字数えてコンマを入れ、文字列がなくなるまで繰り返します。

文字列処理の詳細は、読者の演習として残されています。結局のところ、それは彼の宿題のようです。;-)

于 2013-10-21T14:27:24.503 に答える