【问题标题】:How to add two binary numbers in the array c++如何在数组c ++中添加两个二进制数
【发布时间】:2018-06-29 19:14:59
【问题描述】:

我想我在某个地方犯了一个错误,但我似乎找不到它。我认为问题在于以错误的顺序添加或输入数据。对于任何错误,我深表歉意,英语不是我的主要语言。 enter image description here

#include <iostream>

using namespace std;

int main()
{
  int d, n, m, carry;
  int a[10000];
  int b[10000];
  int addition[10001];
  cin>>d;
  for(int i=0; i<d; i++)
  {
    int a[10000]={0};
    int b[10000]={0};
    int addition[10001]={0};

    cin>>n;
    for(int i=n; i>=1; i--)
    {
        cin>>a[i];
    }
    cin>>m;
    for (int i=m; i>=1; i--)
    {
        cin>>b[i];
    }
    if(n<m)
    {
        n=m;
    }
    carry=0;
    for (int i=1; i<=n; i++)
    {
      addition[i]=(a[i]+b[i]+carry)%2;  //way my teacher 
      carry=(a[i]+b[i]+carry)/2;
    }
    addition[n+1]=carry;
    // if(addition[n+1]==0)n--;
    for(int i=n; i>=0; i--)
    {
      cout<<addition[i];
    }
  }
  return 0;
}

【问题讨论】:

  • 请修正标题中错误的语言名称和问题文本中的拼写错误。
  • 效果不佳.. 究竟是什么问题?错误?输出不正确??
  • 输出不正确
  • int a[10000]={0}; 没有初始化之前声明的数组。
  • 仅通过查看代码,我可以发现至少两个可能的逻辑错误(除了风格错误),但我不知道它们是否是您正在谈论的问题,所以请解释一下你所说的错误输出是什么意思。

标签: c++ arrays iostream


【解决方案1】:

我认为至少有两个错误。

1) 在

for(int i=n; i>=0; i--)

您正在倒数到 0。但在每个其他循环中,您都已倒数到 1。由于您倒数太远,因此您的输出最后会有一个额外的零。 (例如,当它应该显示100时,它会显示1000。)

2) 同样在该循环中,您从n 开始。但是您可能已经在n+1 中添加了进位,您是不是也忘记了输出它?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多