0

swap配列の要素を降順および昇順で最大値から最小値に並べ替えるという関数を作成する際に助けが必要です。この関数の特徴は、swap が配列内の要素を再配置しないため、元の配列内の要素に対して 2 番目のインデックス配列を使用し、swap が元の配列の値に基づいて 2 番目の配列をソートすることです。これらのソートされたインデックスを使用して、元の配列のソートされたバージョンを生成できます。ユーザー入力なしで元の配列を宣言して初期化できます。例えば、

int arr[10] = {1, 5, 22, 14, 6, -5, 7, 9, 12, 15 };

関数スワップのヘッダーは、次のようにする必要があります。

void swap(int array[],int swapedIndexes [], int size, char mode)

mode が'a'の場合、関数は配列を昇順に並べ替え、 mode が の場合、関数は配列を'd'降順に並べ替えます。

例:

int array[5]={2, 4,0,-5,3};
int sortedIndexes[5];
sortMe(array,sortedIndexes, 5, 'a');

インデックスを使用する方法の別の例を次に示します。int number[] = {32,92,11,72};

例: 前 数字: 32 91 11 72 インデックス: 0 1 2 3

数字の後: 11 32 72 91 インデックス: 2 0 3 1

=====================================

関数が配列配列内の要素を再配置する場合、それは間違っています。関数 main で配列 sortedIndexes を初期化する場合、それは誤りです。関数は任意のサイズの配列をソートする必要があります。そうでなければ、それは間違っています。関数 swap のヘッダーを何らかの方法で変更すると、これも間違っています。

それで...誰かがこれのために配列のインデックスを出力する方法を教えてもらえますか?? コードか何かを教えてください。int swappedindexes の 2 番目の配列の使用方法がわかりません。??? これは、私が最も問題を抱えている場所です。これまでのところ、単純なスワップ コードがあります。

#include <iostream>
using namespace std;

int main() {
  int a[10], swap;
  for ( int i = 0; i < 10; ++i )
    cin >> a[i];
  for ( int i = 0; i < 10; ++i ) {
    for ( int j = i; j < 10; ++j ){
      if( a[j] > a[i] ) {
        swap = a[i];
        a[i] = a[j];
       a[j] = swap;
      }
    }
  }

  for ( int i = 0; i < 10; ++i )
    cout << a[i] << " ";
  return 0;
}
4

0 に答える 0