Si vous peut utiliser des outils C++ modernes comme std::vector
et d'autres affaires comme std::sort
(qui trie un std::vector
), ce serait beaucoup plus propre que de le faire vous-même avec des tableaux bruts. Apprendre à utiliser les classes de conteneur et les algorithmes intégrés de la langue vous sera très utile.
#include <vector>
#include <algorithm>
#include <iostream>
struct Student //structure to hold student ID and grade info
{
Student(int id, int grade):id(id),grade(grade){}
int id;
int grade;
};
//comparison operator to use with std::sort
bool operator <(const Student& lhs, const Student& rhs)
{
return lhs.grade < rhs.grade;
}
int main()
{
//You are starting with raw arrays...
int studentID[5]{1,2,3,4,5};
int grade[5]{90,91,73,62,87};
//convert to std::vector of Student objects
//not safe indexing into raw array, just an example
std::vector<Student> students;
for(unsigned int i=0;i<5;++i){
students.push_back(Student(studentID[i],grade[i]));}
//sort the vector (using the less-than operator provided above)
std::sort(students.begin(),students.end());
//reverse the vector, making it high-to-low order
std::reverse(students.begin(),students.end());
//print the result (uses std::for_each with a lambda function)
std::for_each(students.begin(),students.end(),
[](Student s){std::cout<<"ID: "<<s.id<<" grade: "<<s.grade<<std::endl;});
}
Sortie:
ID: 2 grade: 91
ID: 1 grade: 90
ID: 5 grade: 87
ID: 3 grade: 73
ID: 4 grade: 62
Suggestion: Simplifier la question en supprimant toutes les références aux sources de données aléatoires. Vous souhaitez combiner deux tableaux en un pour trier les valeurs d'un, en utilisant les valeurs de l'autre comme clé. Pour cela, peu importe que le contenu des tableaux soit aléatoire. – jogojapan
... Devine que les devoirs sont dus ?! –
@BaidNation Votre édition a changé de manière spectaculaire la signification de votre question - comme cette version est, rien ne suggère que vous voulez trier un vecteur par les valeurs de l'autre (comme c'était le cas à l'origine). Je pense que vous voudrez peut-être revoir et réviser à nouveau. – tmpearce