Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/05/2015, 16:08
Avatar de xKuZz
xKuZz
 
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años
Puntos: 27
Respuesta: Ordenar un arreglo de objetos de manera descendete

Mientras que pongas un n que sea menor o igual que m al introducir los datos no debe darte ese error, de hecho yo lo he compilado y ejucutado y no me ha dado ningún problema. Te dejo tu código modificado por si has bailado alguna cosa sin darte cuenta
Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. class atraccion {
  6.     private:
  7.     int x;
  8.     string name;
  9.     public:
  10.    
  11.     atraccion () {}
  12.     atraccion (int var, string nnombre){
  13.         x=var;
  14.         name = nnombre;
  15.     }
  16.     ~atraccion() {}
  17.    
  18.     void set_x (int val) {              //modifica el x
  19.         x = val;
  20.     }
  21.    
  22.     int get_x () {                      //devuelve el x
  23.         return x;
  24.     }
  25.    
  26.     void set_name ( string nom) {           //modifica el nombre
  27.         name =nom;
  28.     }
  29.    
  30.     string get_name () {                    //devuelve el nombre
  31.         return name;
  32.     }
  33. };
  34.  
  35.  
  36.  
  37. int main (){
  38.     int m, n, h,div;
  39.     int posmayor,mayor;
  40.     int mat[h][h];
  41.     int x,y;
  42.     int indexmax,aux;
  43.     string nombre;
  44.     atraccion intercambio;
  45.    
  46.     cin>>m>>n>>h;
  47.     atraccion ar [m];       //arreglo que almacena cada atraccion
  48.    
  49.         for (int i=0;i<m;i++) {
  50.             cin>>nombre;
  51.             cin>>div;
  52.             ar[i].set_name(nombre);
  53.             ar[i].set_x (div);
  54.         }
  55.  
  56.                     for (int w=0;w<=m-2;w++){               //ordenamiento
  57.             posmayor = w;
  58.             mayor = ar[w].get_x();
  59.             for (int k=w+1; k<=m-1; k++){
  60.                 if (ar[k].get_x() > mayor) {
  61.                     mayor = ar[k].get_x();
  62.                     posmayor =k;
  63.                 }
  64.             }
  65.            
  66.             intercambio = ar[posmayor];
  67.             ar[posmayor] =ar[w];
  68.             ar[w] = intercambio;
  69.         }
  70.        
  71.         for (int j=0;j<n;j++) {
  72.             cout<<ar[j].get_name()<<endl;
  73.         }
  74.    
  75.     return 0;
  76. }