-7

我知道这个问题被问了很多次,但我在代码中遇到了不同的问题,我尝试计算 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-numberssum-of-alternate-elements-of-integer-array但仍然没有得到正确的解决方案,如果用户输入不同范围的不同数字,我们如何解决这个问题。

4

3 回答 3

5

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

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

于 2017-03-19T21:55:23.410 回答
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];
        } 
   }
于 2019-05-11T11:15:58.270 回答
-2

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

1234567

123456[0]

12345[00]

于 2017-03-19T21:41:20.570 回答