0

配列を「選択ソート」しようとしました。しかし、「for ループ」だけで元の配列を表示する代わりに、通常の方法を超えて、私が学んだものを実装するために、元の配列を「org_array」という関数に渡すことにし、「void」でそれを呼び出そうとしました。主要()"。しかし、いくつかのエラーが発生しました。パラメータを渡す際に発生したエラーが何であるかわかりません。助けてください?

コード:

#include<iostream>
#include<conio.h>
using namespace std;
extern int s;
void org_array(int arr[30],int y);
void main()
{
    int i,n,j,pos,a[30];
    cout<<"Enter n: "<<endl;
    cin>>n;
    cout<<"\nEnter array: "<<endl;
    for(i=0;i<n;i++){   
            cin>>a[i];
    }
    cout<<"Orginal Array: ";
    org_array(a[30],n);
    /*for(i=0;i<n;i++){ 
            cout<<a[i]<<" | ";

    }*/
    for(i=0;i<n-1;i++)
    {
        int small=a[i];
        pos=i;
        for(j=i+1;j<n;j++)
        {
            if(a[j]<small)
            {
                    small=a[j];
                    pos=j;
            }
        }
        int temp=a[i];
            a[i]=a[pos];
            a[pos]=temp;

    }
    cout<<"\tSorted Array: ";
    for(i=0;i<n;i++){   
            cout<<a[i]<<" | ";
    }
    getch();
}
void org_array(int arr[30],int y){
    for(s=0;s<y;s++)
    {
        cout<<" "<<arr[s];
    }
}
4

2 に答える 2

3
org_array(a[30],n);

間違っています。そのはず:

org_array(a,n);

また、ISO に従ってmain返される必要があります。intさらに、宣言と定義はそれぞれ次のようにする必要があります。

void org_array(int [],int); // declaration - removed 30 since we might want to pass an array of larger size

void org_array(int arr[],int y) //definition
{
    for(int s=0;s<y;s++)  // You did not declare s as int
    {
        cout<<" "<<arr[s];
    }
}

補足:

An lvalue [see question 2.5] of type array-of-T which appears in an expression decays (with three exceptions) into a pointer to its first element; the type of the resultant pointer is pointer-to-T because an array is not a "modifiable lvalue,"

(The exceptions are when the array is the operand of a sizeof or & operator, or is a literal string initializer for a character array.)

于 2013-10-05T08:12:55.367 に答える
1

あなたのコードで:

cout<<"Orginal Array: ";
org_array(a[30],n);

配列の名前だけを引数として渡す必要があります。配列は、メモリ ブロックのアドレスへの参照として渡されます。呼び出しで配列内の特定のインデックスを参照しています。http://www.cplusplus.com/doc/tutorial/arrays/

org_array(a,n);

あなたのコードで:

void org_array(int arr[30],int y){
for(s=0;s<y;s++)
{
    cout<<" "<<arr[s];
}
}

for ループには、変数 s の型が必要です。整数が必要だと思います。

for(int s=0; s<y; s++)

メイン関数も int 型で、int 値を返す必要があります。

于 2013-10-05T08:39:21.187 に答える