-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

首先,交换不会帮助您订购指针数组。其次,我会在您的 order 函数中创建一个与初始数组大小相同的指针数组,然后在 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 回答