-1

したがって、ポインターを介して参照によってソートされた動的配列が必要です。

ユーザーは不確定な量の成績を入力し、それを最後に入力します。成績は手動で入力します。

これらの成績を昇順で並べ替える必要があります。非常に近いように感じますが、出力は本当にランダムな数値を示しており、原因はわかりません。実際には何も変更できません。 m は正しい軌道に乗っていますが、出力でこれらの乱数を把握できません。

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <cstdlib>

using namespace std;
    void swap (int *num1, int *num2)
{
int temp = *num1;
*num1=*num2;
*num2 = temp;
}

void Order(int Gnum[], int Gtot)
{
for (int i = 0; i < Gtot; i++)
{
    for (int j = i + 1; j < Gtot; j++)
        if (Gnum[i] > Gnum[j])
        {
            swap(Gnum[i], Gnum[j]);

        }
    cout << Gnum[i];
}

}
int main() {

int input;
int input2;

cout << "Please input number of Grades" << endl;
cin >> input2;
cout << "Please input Grades" << endl;
cin >> input;
for (int i = 1; i < input2; i++)
{
    cin >> input;
}

Order(&input, input2);
return 0;
}
4

2 に答える 2

0

これが実行中のコードのバージョンです。違いを自分で確認してください。

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <cstdlib>

using namespace std;
void swap (int *num1, int *num2)
{
    int temp = *num1;
    *num1=*num2;
    *num2 = temp;
}

void Order(int Gnum[], int Gtot)
{
    for (int i = 0; i < Gtot; i++)
    {
        for (int j = i + 1; j < Gtot; j++)
        if (Gnum[i] > Gnum[j])
        {
            swap(&Gnum[i], &Gnum[j]);

        }
        cout << Gnum[i] << " ";
    }
    cout << endl;
}

int main() {

    int *input;
    int input2;

    cout << "Please input number of Grades" << endl;

    cin >> input2;
    input = new int[input2];

    for (int i = 0; i < input2; i++)
    {
        cout << "please input grade " << i << ": ";
        cin >> input[i];
    }

    Order(input, input2);
    delete [] input;
    system("pause");
    return 0;
}
于 2013-10-08T01:13:04.010 に答える
0

まず、 swap はポインター配列の順序付けには役立ちません。次に、注文関数で初期配列と同じサイズのポインター配列を作成し、void Order(////) 内で次の操作を実行します。

for (int i = 0; i < initArraySize; ++i){
   int index = 0;
   int lowest = initArr[0];
   for (int j = 0; j < initArraySize; ++j){
       if (lowest > initArr[i]){
          lowest = initArr[i];
          index = i;
       }
   }
   newArr[0] = lowest;
   initArr[index] = 100000; //so that this won't be looked at again
}

delete [] initArr;

initArr = newArr;
于 2013-10-08T01:13:13.183 に答える