2016-09-20 3 views
-2

ここはクイックソート用のコードです。私は初心者ですので親切にお手伝いください。in C++期待の一次式の前に ']'

#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); 
} 

それは私int main()機能でエラー与えている:このスコープ内で宣言されていない

  1. を。
  2. ']'の前に一次式が必要です。
+1

コードをインデントしてください。 _sigh_。 'obj.sort(a []、left、right);' 'a'、' left'と 'right'はここにいるはずですか? –

+0

あなたのメソッドの 'sort'ローカルパラメータはstructのメンバを隠します。あなたのクラスの 'a'、' left'と 'right'を使いたい場合は' sort'( 'void sort()')の引数を使わないでください – Garf365

+0

'a'、' left'、 'right 'クイック'のメンバーです。関数へのパラメータであってはなりません。 (「ソート」をどこかからコピーしてクラスに入れて、それを「オブジェクト指向」にする気がします。ここでクラスを使う理由はありません。) – molbdnilo

答えて

0

それはあなたがint main()内部変数としてa宣言されていない言及したよう。むしろそれは迅速な目的です。関数では、のような配列をaとして渡すことはありません。aleftrightは、オブジェクトから直接アクセスできないクラスのプライベート変数です。 publicと宣言し、obj.aobj.leftobj.rightのソート機能として使用します。

完全なコード:答えとして

#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); 
} 
+0

私はパラメータに関して疑問を抱いていました@ Shubham Khatriをクリアするためにとても感謝しています。 –

+0

@book_alcoholic問題を解決するのに役立ちましたら、これを回答として受け入れてください。 –

0

は@Shubhamカトリで与えられます。ここに訂正されたコードがあります。

#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); 
} 
+0

今私のプログラムが正しく動作していますありがとうございます@ママ –

関連する問題