2

だから私はこの構造を持っています:

// Structure used to define a point (x,y) in the grid.
typedef struct
{
    int x, y;
} Point;

そしてこの機能

Sequence getSequence(int grid[][MAXCOLS], Point startPos)
{
    // Create an empty sequence
    Sequence emptySeq;
    emptySeq.size = 0;

    // Use the empty sequence to start the recursive function
    return generateSeq(grid, startPos, emptySeq);
}

シーケンスが始まる位置がわかりません。そのため、メインでgetSequence関数を16回呼び出す必要があります。これにより、16個のグリッド位置のそれぞれを可能な開始位置として渡すことができます。

私はこれを試しましたが、うまくいきませんでした。

getSequence(grid, x.0, y.0 );

誰かがメインのgetSequenceを呼び出す方法を教えてもらえますか?プログラミングは初めてです

ありがとう

4

3 に答える 3

4

最も簡単な方法はPoint、Arunが次のように言ったようにのインスタンスを作成することです。

int main()
{
   Point p1 ;
   // create grid here

   p1.x = 0 ;
   p1.y = 0 ;
   getSequence( grid, p1 );
}

使用できる場合C++11は、これも実行できます。

 getSequence( grid, {0,0} );

のようにC++するには、実際にはそのconstructorように使用する必要があります。

class Point
{
     public:
     int x, y;

     Point( int a = 1, int b = 1 ) : x(a) , y(b) {} 
} ;

また、あなたは作ることについて考える必要がxありますが、あなたの特定の例はそれからより複雑になり始めます。あなたがこれを行うことができるのであなたがあなたの電話を持っているならばあなたの電話は少し簡単になります:yprivateconstructor16

 getSequence( grid,  Point(1,1) );
 getSequence( grid,  Point(2,2) );

または、ループを使用することもできます。との値はaアプリケーションbによって異なります。

for( int a = 0, b = 0; a < 5; ++a, ++b)
{
   getSequence(grid, Point(a,b) );
}
于 2013-03-26T02:09:38.993 に答える
1

他の答えの代わりにPoint、コンストラクターを与えることができます:

struct Point
{
    Point(int x, int y) : x(x), y(y){}
    int x, y;
}

次に、次のことを行います。

getSequence(grid, Point(0, 0));

Pointこれにより、関数を呼び出すたびにオブジェクトを明示的に作成(または変更)する必要がなくなります。Pointこのコンテキストでの目的は単なるパラメーターであるため、IMOの方が読みやすくなりますgetSequence

注:C ++ではtypedef、前のキーワードstructは不要です。

于 2013-03-26T02:14:28.140 に答える
0

Pointのインスタンスを作成し、それをgetSequenceメソッドに渡す必要があります。

    Point gridpoint; 
    gridpoint.x = 0;
    gridpoint.y = 0;
    getSequence(grid, gridpoint);
    // Use gridpoint here   
于 2013-03-26T02:09:44.617 に答える