-4

100 個のブロックの配列があり、ここでは各ブロックに 1 つの色が含まれ、この色は文字 a、b、c、...、z の配列からランダムに取得されます。

例:アブデギフダ

次に、次の条件で並べ替えられた配列を返すプログラムを作成する必要があります。

  1. 次のスワップ順序に従う必要があります。

キャラクター最大スワップ

1

b 2

c 3

... ... ...

26

出力: aabddefhgi

私は次の方法を使用しました。

//ブロック数を返す

int getNoOfBlocks();

// 特定のブロックのアルファベットを返す

char getData(int);

//値を入れ替える

void swapBlock(int, int);

void ArrangeBlocks(void)

{

int サイズ = getNoOfBlocks();

for(int i = 0 ; i < size; i++)

    {

        int min = getData(i)-97;

        int pos = 0;

        int ascii = 0;

        for(int j = i + 1; j < size; j++)

            {

               ascii = getData(j)-97;

                if(min > ascii)

                  {

                      min = ascii;

                      pos = j;

                  }

            }

        swapBlock(i, pos+1);

    }

}

4

1 に答える 1

1

間違った要素を交換しています。次のようになります。

  swapBlock(i, pos);

また、最初のループが間違っている場合は、次のようになります。

  for(int i = 0 ; i < size - 1; i++)
于 2013-02-05T18:46:04.743 に答える