C++ 如何在数组中查找元素,使左数组的和等于右数组的和

C++ 如何在数组中查找元素,使左数组的和等于右数组的和,c++,arrays,turbo-c++,C++,Arrays,Turbo C++,以下是代码应生成的输入和输出: 输入:1 4 2 5 0 输出:2 说明:如果2是分区,那么:1+4=5(LHS)和5+0=5(RHS)应该打印2,但在我的情况下,我没有得到输出 我尝试了我的代码的逻辑。。第n个元素将出现在数组之间的某个位置。因此,考虑到arr的元素之和,直到第n个元素将是LHS,从第n个元素到arr的末尾,即RHS。我还添加了一个while循环,它增加了定点元素n #include <iostream.h> #include <conio.h> v

以下是代码应生成的输入和输出:

  • 输入:
    1 4 2 5 0
  • 输出:
    2
说明:如果2是分区,那么:
1+4=5(LHS)
5+0=5(RHS)
应该打印
2
,但在我的情况下,我没有得到输出

我尝试了我的代码的逻辑。。第n个元素将出现在数组之间的某个位置。因此,考虑到arr的元素之和,直到第n个元素将是LHS,从第n个元素到arr的末尾,即RHS。我还添加了一个while循环,它增加了定点元素n

#include <iostream.h>
#include <conio.h>
void main(){
   int arr[5],arr2[5],i,j=0,k=0,n=1;
   cout<<"input_arr\n";
   for(i=0;i<5;i++)
    cin>>arr[i];

   while(n<=5)
{
   for(i=n;i<5;n++)
      j+=arr[i];   //sum of right side arr from n-th   element
   for(i=0;i<n;i++)
    k+=arr2[i];  //sum of left side arr till n-th element
   if(k==j)
    cout<<"\n"<<arr[n];  // prints the equilbrium element
   else
         n++;
}
    getch();
}
#包括
#包括
void main(){
int-arr[5],arr2[5],i,j=0,k=0,n=1;

cout我会给你一些提示,引导你找到解决方案:

  • 一次计算数组中的总和。我们称之为totalSum
  • 进行第二次传递并计算partialSum,直到您处理的位置(但未包括在内)。假设这是i,值为a[i]。如果
    totalSum-partialSum-a[i]=partialSum
    ,则位置i是您的答案,a[i]是它的值

  • 首先,如果我理解正确,你想用这个方法重置每次迭代的j,k

    第二,出于某种原因,第二个for循环增加n而不是i

    第三,您还声明了arr2,而不是初始化它,并出于某种原因将arr2中的值添加到k中

    你也包括了中位数。试试n=2

    j=arr[2]+arr[3]+arr[4]=2+5+0=7
    k=arr[0]+arr[1]=1+4=0

    对while循环的建议更改(以保持相同的方法):


    while(n对数组右侧求和时,从平衡元素开始:

    让我们假设
    n=2
    ,您的输入是
    [1,4,2,5,0]

    while(n<=5) {
      for(i=n;i<5;n++)
          j+=arr[i];   //sum of right side arr from n-th   element
    }
    

    while(Nun相关):在你得到更多的之前,GIV阅读,以便你有意识到你可能会遇到的问题,使用Turbo C++。强制性的提醒:Turbo C++是非常过时的,你应该切换到一个现代编译器…在上面Turbc++ +带有神奇的涡轮调试器,一个工具,将允许你控制。ol检查程序的执行情况并调查其变量。这使得查看程序真正在做什么(与您希望它做的相反)变得更加容易。请注意,绝大多数现代工具链也带有调试器。我不会给出完整的答案,但您只需一段时间(或一段时间)就可以实现这一点循环,从数组的开始和结束处累加一个和-也就是说,这里的
    循环不需要任何
    ,只需考虑
    while
    循环需要什么条件。这看起来有点奇怪:
    for(i=n;i
    
    while(n<=5) {
      for(i=n;i<5;n++)
          j+=arr[i];   //sum of right side arr from n-th   element
    }