在数组中添加数字C ++

时间:2018-09-29 08:47:14

标签: c++ arrays integer

我是C ++的新手,我试图了解如何使用数组。我的想法是:

  1. 我希望用户输入一个数组,该程序输出 数组
  2. 将数组中的所有值加倍并输出
  3. 对于每个加倍的值,请添加加倍的数字 (1位数字将保持不变),然后将新数字输出为 好吧。

(例如,如果数组为[5、6、7、8],则双倍的值将为[10、12、14、16],然后将每个值的数字相加,例如[1 + 0、1 + 2,1 + 4,1 + 6]来获得[1、3、5、7]。

我放了我的代码来显示进度,随时指出所有错误!

感谢您的帮助!

p.s。嵌套循环无效:(

window.location.hash

3 个答案:

答案 0 :(得分:1)

几件事:

  • maxNumnum[]从未被初始化,这很危险。
  • 这不是您扫描输入的方式。理想情况下,您会做的像while(cin >> tem_var){}。或者,您可以将其修改为if( !(cin >> num[i]) ) break;。这样,您以后也不需要执行maxNum-1。如果(cin>>)成功读取变量,则为True,否则为False。这样,您可以通过输入任何非数字字符串来停止扫描,而无需在其余迭代中运行循环,而是在发生这种情况时将num [i]保留为未初始化状态。
  • 您忘了在数组编号之间输出分隔符,这使它难以阅读。

    cout << num[i] << "|";或smth。

  • 在最后一部分中,您进行3个循环:从未使用过的k for循环,迭代num的l for循环和k while循环对数字求和。其中之一是不必要的。

  • 在最后一个sum[]数组中,尽管正确填充了数组,但未输出。您可以在l循环中声明它,这意味着退出时会删除它。即使您在外面声明了它。您的cout << sum[l];l循环之外,这意味着当您只有[0:]时,它将仅尝试执行cout << sum[maxNum];(循环结束的l的值) ({Num-1)]个元素在numsum中填充。

  • 我建议您尝试使用for(k=1;k<num[l];k*=10) sum[l]+= num[l] / k % 10;之类的方法,而不要使用while循环。它更短,可以完成工作并保留num[l]的状态,以防万一您以后决定再次使用它。

答案 1 :(得分:0)

您需要首先用全零初始化sum数组。您不需要嵌套循环。

创建一个求和数组以存储每个数字的总和,并将其初始化为0。首先编写一个循环遍历doubled数组的元素。为每个元素写一个循环(您选择while循环)以遍历每个数字的数字并将它们移至相应的sum元素。

我对您的代码做了一些修改,请仔细检查一次。

#include <iostream>
#include <string>

using namespace std;

int maxNum;
int num[20];


int main()
{
  cout << "Enter an Array" << endl;
  for (int i=0;i<20;i++)
  {
      cin >> num[i];
      maxNum++;
      if (num[i]==-1)
      break;
  }

  cout <<"Your array is: " << endl;

  for (int i=0;i<maxNum-1;i++)
  cout << num[i]<<' ';

  cout << endl;

    cout << "Your doubled array is:" << endl;

    for (int j=0;j<maxNum-1;j++)
    {
    num[j]*=2;
    cout << num[j]<<' ';
    }

    cout << endl;

    cout << "When the digits of each seat are added..." << endl;


    int sum[20];
    for (int i=0;i<maxNum-1;i++)
        sum[i]=0;
    for (int k=0;k<maxNum-1;k++)
    {
       // for (int l=0;l<maxNum;l++)
       // {

           while (num[k]!=0)
           {
           sum[k]=sum[k]+num[k]%10;
           num[k]=num[k]/10;
           }
           cout << sum[k]<<' ';
       // }



    }



    cout << endl;
}

答案 2 :(得分:0)

您不需要嵌套循环,而使任何程序后面的逻辑仅作为一个简单示例并获取结果,不要直接跳转到代码。这将帮助您建立逻辑。

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\MSBuild.exe" ..\MySolution.sln "/target:Rebuild" /verbosity:minimal /toolsversion:15.0 /nologo /maxcpucount /p:Configuration=%1 /property:DeployOnBuild="true" /property:DeployDefaultTarget="WebPublish" /property:WebPublishMethod="FileSystem" /property:DeleteExistingFiles="false" /property:publishUrl="%cd%\_output\www" /property:_FindDependencies="false" /p:BuildSourceFolder="%cd%\..\src" /p:BuildOutputBaseFolder="%cd%\_output\configs" /property:BuildOutputWWWFolder="%cd%\_output\www"