c ++

时间:2017-03-19 21:29:59

标签: c++ arrays sum-of-digits

我知道这个问题很多次,但我的代码中遇到了不同的问题,我尝试计算2-15之间长整数的总和。

代码:

long array[20];
long NUMBERS;

cout << "How many numbers ? : ";
cin >> NUMBERS;
long sum=0;
for (int i = 0; i < NUMBERS;i++){

    cout << "Input number " << (i+1) << " : ";
    cin >> array[i];    
}

cout << "Calculate Sum" << endl;
for (int i = 0; i < NUMBERS;i++){
    sum = sum + array[i];
}

cout << "Sum is : " << sum << endl;

当我输入这三个数字时。

  1. 1234567
  2. 123456
  3. 12345
  4. 输出

    总和是:1370368

    但实际答案是:3703627。

    我试试这些解决方案 summing-large-numberssum-of-alternate-elements-of-integer-array但仍然没有得到正确的解决方案,如果用户输入不同范围的不同号码,我们也可以解决此问题。

3 个答案:

答案 0 :(得分:5)

这不是关于编程,而是数学...... 希望这会有所帮助:http://www.wikihow.com/Add-Large-Numbers

(作为一个简单的例子,加1和11.结果是什么?12或21?)

答案 1 :(得分:0)

我的代码将大量数字与字符串相加。 首先,输入要求和的数字数(至25)。 然后输入数字(至180个“每个数字”)。

#include <iostream>
#include <stdlib.h>
using namespace std;
int main (){
    int band;
    cin >> band;
    string string_of_number[25];
    for (int i=0; i<band; i++){ //for get all string number
        cin >> string_of_number[i];
    }
    int strings_length[band];
    for (int i=0; i<band; i++){ //for get all length of strings
        strings_length[i]=string_of_number[i].length();
    }
    int answer[180];
    for(int i=0; i<180; i++){
        answer[i]=0;
    }
    int remaner=0;
    int sum=0;
    int last=180;
    for (int h=0; h<band; h++){ // for sum strings with sum answer one by one
        int j=179;
        for (int i=strings_length[h]; i>=0; i--){
        if(string_of_number[h][i]=='\0'){
            i--;
        }
        sum = (remaner + (string_of_number[h][i]-'0') + answer[j]) %10;
        remaner = ((string_of_number[h][i]-'0') + answer[j]) / 10;
        answer[j]=sum;
        if (i==0 && remaner>0){
            j--;
            answer[j]+=remaner;
            remaner=0;
        }
        if(last>j)
            last=j;
            j--;
           }
          }
        for(; last<180; last++){
        cout << answer[last];
        } 
   }

答案 2 :(得分:-2)

您的程序似乎假设所有数字都是7位数:

1234567

123456 [0]

12345 [00]