struct student
{
int num;
char name[20];
char sex;
int grade;
};
void main()
{
int i;
float ave, sum = 0;
struct student stu[5];
for (i = 0; i < 5; i++)
{
cout << "请依次输入学生" << i+1 << "的学号、姓名、性别、成绩" << endl;
cin >> stu[i].num >> stu[i].name >> stu[i].sex >> stu[i].grade;
}}
如题:如何将其中5个成员grade拿出来进行排序?
已经弄了冒泡排序法的函数,但是不知道用不用的着,调用函数时候有错误
void bubble(int [], int);
void bubble(int a[], int size)
{
int i, temp;
for (int pass = 1; pass < size; pass++)
{
for(i=0;i if (a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
for (i = 0; i < size; i++)
cout << a[i] << ",";
cout << endl;
}
}
前段时间帮同学写了个选课的系统,里面也涉及结构排序,这是给同学写的简易的代码
void CourseMange::SortCourse()
{
for (int i = m_vCourseArray.size() - 1; i >= 0; --i)
{
for (int j = 0; j < i; j++)
{
if (m_vCourseArray[j].id > m_vCourseArray[j + 1].id)
swap(m_vCourseArray[j], m_vCourseArray[j + 1]);
}
}
}
如果你是要将每个成员根据grade进行排序的话,你可以先进行比对一下,你的冒泡排序里的if条件语句进行大小比较的时候,应该取出每一个结构中的grade进行比较大小
代码如下
void bubble(struct student a[], int size)
{
for (int pass = 0; pass < size; pass++)
{
for(int i = 0; i < pass; ++i)
{
if (a[i].grade > a[i + 1].grade)
{
swap(a[i], a[i+1]);
}
}
}
for (i = 0; i < size; i++)
{
cout << a[i].grade << ",";
}
cout << endl;
}
如果你只是想取出5个成员中grade拿出来进行排序
由于你设计的冒泡排序中传入的是数组,我将每个成员的grade放入到另一个数组中,进行传参
代码如下
#include <iostream>
using namespace std;
struct student
{
int num;
char name[20];
char sex;
int grade;
};
void bubble(int a[], int);
int main()
{
int i;
float ave, sum = 0;
struct student stu[5];
for (i = 0; i < 5; i++)
{
cout << "请依次输入学生" << i+1 << "的学号、姓名、性别、成绩" << endl;
cin >> stu[i].num >> stu[i].name >> stu[i].sex >> stu[i].grade;
}
int* array = new int[5];
for(int i = 0; i < 5; ++i)
{
array[i] = stu[i].grade;
}
bubble(array, 5);
return 0;
}
void bubble(int a[], int size)
{
int i, temp;
for (int pass = 0; pass < size; pass++)
{
for(i=0; i < pass; ++i)
{
if (a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
for (i = 0; i < size; i++)
{
cout << a[i] << ",";
}
cout << endl;
}
sort
#include "algorithm"
int _tmain(int argc, _TCHAR* argv[])
{
struct A
{
int age;
LPCSTR name;
};
A as[] = {{18, "b"}, {19, "a"}, {20, "c"}, };
std::sort(as, as +_countof(as), [](const A& l, const A& r){return l.name[0] < r.name[0];});
cout << as[0].age << as[0].name <<endl;
cout << as[1].age << as[1].name <<endl;
cout << as[2].age << as[2].name <<endl;
printf("The End\n");
::getchar();
return 1;
}