C ++中长整数数组的总和

Sum of long integer array in c++

我知道这个问题被问过很多次,但我在我的代码中遇到了不同的问题,我尝试计算 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

输出:

总数是:1370368

但实际答案是:3703627。

我尝试了这些解决方案 summing-large-numbers and 但仍然没有得到正确的解决方案,如果用户输入不同范围的不同数字,我们如何解决这个问题。

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

1234567

123456[0]

12345[00]

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

(举个简单的例子,1和11相加,结果是12还是21?)

我的代码将大数字与字符串相加。 首先,您输入要求和的数字数量(至 25)。 然后你输入数字(到 180 'each number')。

#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]=='[=10=]'){
            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];
        } 
   }