hola, gracias por responder, lamento que hasta ahora viera tu respuesta pero tenia cosas que hacer, hice lo que me dijiste y modifique un poco mi codigo con respecto al anterior, ya que mi arreglo de atracciones siempre debio ser de m , y ya le modifique eso, pero ahora me da segmentation, y no entiendo por que, por si acaso en el codigo cambie mi int h por que como arriba ya leia h crei que ese era el problema pero no...
¿y asi si estaria bien para que se ordene el arreglo de manera descendente?
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 intercambio;
cin>>m>>n>>h;
atraccion ar [m]; //arreglo que almacena cada atraccion
for (int i=0;i<m;i++) {
cin>>nombre;
ar[i].set_name(nombre);
}
for (int w=0;w<=m-2;w++){ //ordenamiento
posmayor = w;
mayor = ar[w].get_x();
for (int k=w+1; k<=m; k++){
if (ar[k].get_x() > mayor) {
mayor = ar[k].get_x();
posmayor =k;
}
}
intercambio = ar[posmayor];
ar[posmayor] =ar[w];
ar[w] = intercambio;
}
for (int j=0;j<n;j++) {
cout<<ar[j].get_name()<<endl;
}
return 0;
}