yo leo 3 valores m que es la cantidad de atracciones, que es mayor a 1 y menor 100000; un n que son la cantidad de atracciones populares, osea, las atracciones que tienen un nivel de divesion mas alto y tambien leo un valor h que por ahora no lo estoy usando pero despues lo usare por que son para leer las aristas con las que se conectaran las atracciones,
por ahora mi problema es que tengo que ordenar ese arreglo de mayor a menor ya que las atracciones con mayor nivel de diversion van primero...
y bueno yo estaba usando el ordenamiento de seleccion (selection sort) que es de menor a mayor pero lo modifique como yo crei para poder ordenarlo ascendentemente, pero mi problema es que no me ordena y nunca antes habia ordenado un arreglo de objetos y tengo dudas con eso, podrian ayudarme por favor con el codigo
Código C++:
Ver original
#include <iostream> #include <string> using namespace std; class atraccion { private: int x; string name; public: atraccion () {} atraccion (int var, string nnombre){ x=var; name = nnombre; } ~atraccion() {} void set_x (int val) { //modifica el x x = val; } int get_x () { //devuelve el x return x; } void set_name ( string nom) { //modifica el nombre name =nom; } string get_name () { //devuelve el nombre return name; } }; int main (){ int posmayor,mayor; int mat[h][h]; int x,y; int indexmax,aux; string nombre; atraccion ar [100000]; //arreglo que almacena cada atraccion cin>>m>>n>>h; for (int i=0;i<m;i++) { cin>>nombre; ar[i].set_name(nombre); } for (int h=0;h<=m-1;h++){ //ordenamiento posmayor = h; mayor = ar[h].get_x(); for (int k=h+1; k<=m; k++){ if (ar[k].get_x() > mayor) { mayor = ar[k].get_x(); posmayor =k; } } ar[posmayor] = ar[h]; ar[h].set_x(mayor); } for (int j=0;j<n;j++) { cout<<ar[j].get_name()<<endl; } return 0; }