简体   繁体   English

在c ++中']'之前的预期主表达式

[英]in c++ expected primary expression before ']'

Here is my code for quick sort.这是我的快速排序代码。 I am a beginner kindly please help.我是初学者,请帮忙。

#include<iostream>
using namespace std;

class quick
{
    private:
        int n,left,right,i,j;
        float a[55];
    public:
        void getdata();
        void sort(float[],int,int);
        void putdata();

};
void quick::getdata()
{
    cout<<"Enter how many elements you want to enter:";
    cin>>n;

    for(int k=0;k<n;k++)
    {
        cout<<"Enter percentage of students:"<<k+1<<":";
        cin>>a[k];
    }   

    left=0;
    right=n-1;
}

void quick::putdata()
{

    for(int k=0;k<5;k++)
    {
        cout<<"\nSorted marks are:"<<a[k]<<endl;
    }   
}

void quick::sort(float a[],int left,int right)
{
    if(left<right)
    {
        int i=left;
        int j=right+1;
        float pivot=a[left];
        do{
            do{
                i++;
            }while((a[i]<pivot)&& left<right);

            do{
                j--;
            }while(a[j]>pivot);

            if(i<j)
                swap(a[i],a[j]);
        }while(i<j);

        a[left]=a[j];
        a[j]=pivot;
        sort(a,left,j-1);
        sort(a,j+1,right);
    }   
}

int main()
{   

    quick obj;
    obj.getdata();
    obj.sort(a[],left,right);
    obj.putdata();
return (0);
}

It is giving me error in int main() function:它在int main()函数中给了我错误:

  1. a is not declared in this scope. a 未在此范围内声明。
  2. expected primary expression before ']'. ']' 之前的预期主要表达式。

As it mentions you have not declared a as a variable inside the int main() .由于它提到你还没有宣布a作为变量里面int main() Rather it is an object of quick.相反,它是快速的对象。 In a function you don't pass array like a[] rather as a only .since a , left , right are a private variable of a class you can't access it from the object directly.在功能你不通过数组像a[]而不是作为a只。自从aleftright是一类的私有变量,你不能从对象直接访问它。 Declare it as public and use it as obj.a , obj.left , obj.right inside sort function.将其声明为public并在 sort 函数obj.left其用作obj.aobj.leftobj.right

Complete code:完整代码:

#include<iostream>
using namespace std;

class quick
{
     public:
        int n,left,right,i,j;
        float a[55];

        void getdata();
        void sort(float[],int,int);
        void putdata();

};
void quick::getdata()
{
    cout<<"Enter how many elements you want to enter:";
    cin>>n;

    for(int k=0;k<n;k++)
    {
        cout<<"Enter percentage of students:"<<k+1<<":";
        cin>>a[k];
    }   

    left=0;
    right=n-1;
}

void quick::putdata()
{

    for(int k=0;k<5;k++)
    {
        cout<<"\nSorted marks are:"<<a[k]<<endl;
    }   
}

void quick::sort(float a[],int left,int right)
{
    if(left<right)
    {
        int i=left;
        int j=right+1;
        float pivot=a[left];
        do{
            do{
                i++;
            }while((a[i]<pivot)&& left<right);

            do{
                j--;
            }while(a[j]>pivot);

            if(i<j)
                swap(a[i],a[j]);
        }while(i<j);

        a[left]=a[j];
        a[j]=pivot;
        sort(a,left,j-1);
        sort(a,j+1,right);
    }   
}

int main()
{   

    quick obj;
    obj.getdata();
    obj.sort(obj.a,obj.left,obj.right);
    obj.putdata();
return (0);
}

As the answer is given by @Shubham Khatri.正如@Shubham Khatri 给出的答案。 Here is the corrected code.这是更正后的代码。

#include<iostream>
using namespace std;
class quick
{
    public: int n,left,right,i,j;
        float a[55];
    public:
        void getdata();
        void sort(float[],int,int);
        void putdata();

};
void quick::getdata()
{
    cout<<"Enter how many elements you want to enter:";
        cin>>n;
    for(int k=0;k<n;k++)
    {
        cout<<"Enter percentage of students:"<<k+1<<":";
        cin>>a[k];
    }   

    left=0;
    right=n-1;
}
void quick::putdata()
{

    for(int k=0;k<n;k++)
    {
        cout<<"\nSorted marks are:"<<a[k]<<endl;

    }   

}
void quick::sort(float a[],int left,int right)
{
    if(left<right)
        {
            int i=left;
            int j=right+1;
            float pivot=a[left];
    do{
        do{
            i++;
              }while((a[i]<pivot)&& left<right);

        do{
            j--;
          }while(a[j]>pivot);

        if(i<j)
            swap(a[i],a[j]);
    }

        while(i<j);
    a[left]=a[j];
    a[j]=pivot;
    sort(a,left,j-1);
    sort(a,j+1,right);
}   
}
int main()
{   

    quick obj;
    obj.getdata();
    obj.sort(obj.a,obj.left,obj.right);
    obj.putdata();
return (0);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM