数据透视元素- c++/c

fnvucqvd  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(126)

这个程序在一个所有元素都是非零且唯一的数组中查找主元元素。如果数组中的一个元素左侧列表中所有元素的总和等于其右侧列表中所有元素的总和,则该元素是主元元素。例如:{1,2,3,7,6}这里7是主元1 + 2 + 3 = 6**回到问题上来,我将分享我的代码为这个问题。问题是它不工作。我咨询了一些资源,但都提到它是低效的。有人能请检查我的代码,并告诉我哪里出错了。我想开发此代码,并要求所有找到此代码中的错误,而不是建议一个新的代码。PS:我的第一个问题,所以如果你不满意我的方法张贴一个问题,请原谅。最后的问题似乎是与我的枢纽功能。请求Maven跳过其他行的代码和验证枢纽功能。
我的代码:

#include<iostream>
using namespace std;

void initarray(int a[],int n)
{
    for(int i =0;i<n;i++)
    {
        a[i]=0;
    }
}

void acceptarray(int a[],int n)
{
    for(int i =0;i<n;i++)
    {
        cout<<"Enter element"<<i+1;cin>>a[i];
    }
}

int pivotelement(int a[],int n)
{
    int s1 =0; int s2=0;
    for(int i =0;i<n-1;i++)
    {
        for(int k =0;k<=i;k++)
        {
            s1 +=a[k];      
        }
        for(int j = i+2;j<n;j++)
        {
            s2 +=a[j];  
        }

        if(s1 == s2)
        {
            cout<<"Pivot element is"<<" "<<a[i+1];break;
        }
        else if(s1 != s2)
        {
            continue;
        }

        else if(i == n-2)
        {
            cout<<"0(no pivot element)";break;
        } 

   }
}

int main(void)
{
    int a[100];
    int n =0;
    cout<<"Enter the number of elements in the array";cin>>n;
    initarray(a,n);
    acceptarray(a,n);
    pivotelement(a,n);
    return 0;

}
x0fgdtte

x0fgdtte1#

#include<iostream>
using namespace std;

void initarray(int a[], int n)
{
    for(int i = 0; i<n; i++)
    {
        a[i]=0;
    }
}

void acceptarray(int a[], int n)
{
    for(int i = 0; i<n; i++)
    {
        cin >> a[i];
    }
}

int pivotelement(int a[], int n)   //function has return type int so return the index of pivot element
{
    int s1 = 0;
    int s2 = 0;

    for(int i = 0; i < n-1; i++)
    {
        if(i==0 || i==n-1) /* this condition added */
            continue;

        s1=0, s2=0; /* make s1 s2 zero inside for loop */

        for(int k = 0; k<i; k++) /* k<i not k<=i */
        {
            s1 += a[k];
        }
        for(int j = i+1; j<n; j++) /* j=i+1 not j=i+2 */
        {
            s2 +=a[j];
        }
        if(s1 == s2)
        {
            return i;               //returning the index of pivot element
        }

    }
    return -1;         //return -1 if pivot not found
}

int main(void)
{
    int a[100];
    int n =0;
    cin>>n;
    initarray(a,n);
    acceptarray(a,n);
    int x=pivotelement(a,n);         //call pivot element function and take the value returned

    if(x==-1)
        cout<<"no pivot";
    else
        cout<<"pivot element "<<a[x];

    return 0;
}

我已经在注解中指出了你的错误。这段代码工作得很好。

rhfm7lfc

rhfm7lfc2#

#include <bits/stdc++.h>
using namespace std;
int main(){
     int n,hsh=0;cin>>n;
     int arr[n];
     for (int i=0;i<n;i++){
          cin>>arr[i];
     }int i=0,j=n-1,first=arr[0],last=arr[n-1];
     while (i!=j){
          if (first==last){
               if (j=i+2){
                    cout<<arr[i+1];
                    hsh=-1;break;   
               }    
          }else if (first<last){
               i++;
               first+=arr[i];
          }else {
               j--;
               last+=arr[j];
          }
     }    if (hsh==0) cout<<"No Pivot Element";
        
}

相关问题