【解決方法】バイナリ メソッドを使用する代わりに、基本的な C++ プログラムを使用して問題を解決できますか?


C++でプログラムを書きます。 出力の最後の列は折り返されません。 ユーザーはキーボードから 15 個の整数 (正および負の整数を含む) を入力できます。 プログラムは入力数値を (小さい値から大きい値の順に) 並べ替え、結果を出力します。 ただし、ソート ルールは次のようにわずかに調整されます。 (1) すべての偶数はすべての奇数より前にソートされる必要があります (2) すべての偶数とすべての奇数は小さい値から大きい値の順にソートされます (3) 入力に 0、0 が含まれる場合最後にソートされます 前後のゼロ以外の数値は、前述のルールに従ってソートされます。 たとえば、入力数値の順序は 51 -4 0 24 -13 -6 0 38 -27 -48 3 17 8 0 21 です。その場合、並べ替えられた結果は次のようになります: 0 0 0 -48 -6 -4 8 24 38 – 27 -13 3 17 21 51 ユーザー入力が必要な部分については、ユーザーに入力を許可する前にテキスト メッセージ プロンプトを印刷してください。 プログラム実行出力画面は以下のとおりです(は空白を意味します) Integer1:51 Integer2:-4 Integer3:0 Integer4:24 Integer5:-13 Integer6:-6 Integer7:0 Integer8:38 Integer9:-27 Integer10:-48 Integer11: 3 Integer12: 17 Integer13:8 Integer14:0 Integer15:21 結果: 0□0□0□-48□-6□-4□8□24□38□-27□-13□3□17□21□51

私が試したこと:

C++
#include <iostream>
using namespace std;

void sortArray(int arr[], int n) {
    int temp;
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] > arr[j]) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

int main() {
    int nums[15];
    int sortedNums[15];
    int n = 0;

 
    for (int i = 0; i < 15; ++i) {
        cout << "Integer" << i + 1 << ": ";
        cin >> nums[i];
    }

    for (int i = 0; i < 15; ++i) {
        if (nums[i] == 0) {
            sortedNums[n++] = nums[i];
        }
    }

    for (int i = 0; i < 15; ++i) {
        if (nums[i] != 0 && nums[i] % 2 == 0) {
            sortedNums[n++] = nums[i];
        }
    }


    for (int i = 0; i < 15; ++i) {
        if (nums[i] % 2 != 0) {
            sortedNums[n++] = nums[i];
        }
    }

    // ?整?排序???行排序
    sortArray(sortedNums, n);

    // ?出?果
    cout << "Result: ";
    for (int i = 0; i < n; i++) {
        cout << sortedNums[i] << " ";
    }

    return 0;
}

解決策 1

最初に入力値に対して単純なバブル ソートを使用すると、すべての数値が順番に並べられます。 したがって、サンプルでは、​​並べ替えられたリストは次のようになります。

0 0 0 -48 -6 -4 8 24 38 -27 -13 3 17 21 51

したがって、そのリストから 2 つの新しいリストに分割するのは簡単です。 1 つは最後にゼロを含むすべての偶数を含み、もう 1 つはすべての奇数を含みます。

あるいは、並べ替えルーチンのルールを使用して、質問の内容を実行することもできます。

コメント

タイトルとURLをコピーしました