elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con C++ Ordenar por apellido y edad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con C++ Ordenar por apellido y edad  (Leído 4,779 veces)
bryanrz96

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Ayuda con C++ Ordenar por apellido y edad
« en: 1 Diciembre 2015, 21:50 pm »

Problema:
Crear un programa que gestiona un elenco de personas que van ingresadas por el cliente, el cliente ingresa un nombre, apellido y edad para tres personas diferentes.
El programa, una vez ingresados los datos, imprime el elenco ordenado por apellido y sucessivamente por edad.
hasta el momento tengo esto, que me ordena por edad(El mayor)
Código
  1. struct persone
  2. {
  3.   string nome;
  4.  string cognome;
  5.  int edad;
  6. };
  7.  
  8.  
  9. int main ()
  10. {
  11.   persone arreglo[3];
  12.  
  13.   for (int i =0; i < 3; i++)
  14.   {
  15.       cout<<"Inserte Nombre " <<i+1 <<endl;
  16.       cin>> arreglo[i].nome;
  17.       cout<<"Inserte Cognome " <<i+1 <<endl;
  18.       cin>> arreglo[i].cognome;
  19.       cout<<"Inserte Edad " <<i+1 <<endl;
  20.       cin>> arreglo[i].edad;
  21.   }
  22.  
  23.   //ordenar  metodo burbuja por edades
  24.   int temp = 0;
  25.   for (int i =0; i < 3; i++)
  26.      for (int j =i+1; j < 3; j++)
  27.         if ( arreglo[i].edad < arreglo[j].edad )
  28.         {
  29.              temp = arreglo[i].edad;
  30.              arreglo[i].edad = arreglo[j].edad;
  31.              arreglo[j].edad = temp;
  32.         }
  33.  
  34.   //ordenar  metodo burbuja por nombres
  35.   string temp1 = "";
  36.   for (int i =0; i < 3; i++)
  37.      for (int j =i+2; j < 3; j++)
  38.         if ( arreglo[i].nome < arreglo[j].nome )
  39.         {
  40.              temp1 = arreglo[i].nome;
  41.              arreglo[i].nome = arreglo[j].nome;
  42.              arreglo[j].nome = temp1;
  43.         }
  44. string temp2 = "";
  45.   for (int i =0; i < 3; i++)
  46.      for (int j =i+2; j < 3; j++)
  47.         if ( arreglo[i].cognome < arreglo[j].cognome )
  48.         {
  49.              temp1 = arreglo[i].cognome;
  50.              arreglo[i].cognome= arreglo[j].cognome;
  51.              arreglo[j].cognome = temp2;
  52.         }
  53.  
  54.   for (int i =0; i < 3; i++)
  55.   {
  56.       cout<<i+1<<": Nome " <<arreglo[i].nome<<endl;
  57.       cout<<i+1<<": Cognome " <<arreglo[i].cognome<<endl;
  58.       cout<<i+1<<": Età " <<arreglo[i].edad<<endl;
  59.   }
  60.  
  61.  return 0;
  62. }
  63.  
No se donde esta el problema, los apellidos no me concuerdan con los nombres


« Última modificación: 1 Diciembre 2015, 21:58 pm por bryanrz96 » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con C++ Ordenar por apellido y edad
« Respuesta #1 en: 1 Diciembre 2015, 22:17 pm »

Al ordenar, estás intercambiando solo los datos, ya sea edad, o nombre. Así, estás separando edades y nombres de sus estructuras originales, no lo está ordenando.
Si ordenas una estructura X por un criterio Y, tienes que intercambiar los datos X, no los datos Y.

En definitiva, cuando intercambias dentro de los bucles con burbuja, intercambia las estructuras enteras.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines