所以我需要通过Pointers按引用排序动态数组。
用户输入一个不确定数量的等级,他/她表示结束,手动输入等级。
我需要按升序排序这些成绩,我感觉好像我非常接近,虽然我的输出给了我真正的随机数字但我不知道原因,我不能真正改变任何东西,因为我我认为我在正确的轨道上,但我无法在输出中找出这些随机数。
#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;
}
答案 0 :(得分: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;
}
答案 1 :(得分:0)
首先,交换不会帮助您订购指针数组。第二,我会在你的命令函数中创建一个与初始数组大小相同的指针数组,然后在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;