#include <cstdlib>
#include <iostream>
#include <cstdio>
#include <cstring>
#define tam 4 //constante
struct empleado{
char nom[30];
int edad;
float sueldo;
char sexo;
char mat[2][30];
};
//Prototipos
empleado captura();
void imprimir(empleado emp);
void ordenar(empleado vec[]);
using namespace std;
int main()
{
//vec de struct para trabajar TAM registros
empleado vec[tam];
int temp,temp2;
for(int i=1;i<tam;i++)
vec[i]=captura();
cout<<"\n\nRegistros Desordenados\n";
for(int i=1;i<tam;i++)
imprimir(vec[i]);
//C O M P L E T A R ..... Linea de codigo que ordena el vector por edad
cout<<"\n\nRegistros ordenados por EDAD\n";
for(int i=1;i<tam-1;i++)
{
for(int j=1;j<tam-i-1;j++)
{
if (vec[j].edad> vec[j+1].edad)
{
temp=vec[j].edad;
vec[j].edad=vec[j+1].edad;
vec[j+1].edad=temp;
}
}
}
for(int i=0;i<tam;i++)
imprimir(vec[i]);
//C O M P L E T A R ..... Linea de codigo que ordena el vector por nombre
cout<<"\n\nRegistros Ordenados por NOMBRE\n";
for(int j=1;j<tam;j++)
{
temp2=strcmp(vec[j].nom,vec[j+1].nom);
if(temp2>0)
strcpy(vec[0].nom,vec[j].nom);
strcpy(vec[j].nom,vec[j+1].nom);
strcpy(vec[j+1].nom,vec[0].nom);
}
for(int i=1;i<tam;i++)
imprimir(vec[i]);
system("PAUSE");
return EXIT_SUCCESS;
}
empleado captura()
{
empleado emp; //Variable local de captura
cout<<"\n\nNombre: ";
cin.getline(emp.nom,30);
cout<<"Edad: ";
cin>>emp.edad;
cout<<"Sueldo: ";
cin>>emp.sueldo;
cout<<"Sexo: ";
cin>>emp.sexo;
fflush(stdin);
cout<<"mail 1: ";
cin.getline(emp.mat[0],30);
cout<<"mail 2: ";
fflush(stdin);
cin.getline(emp.mat[1],30);
return emp;
}
void imprimir(empleado emp)
{
cout<<endl<<"Nombre: "<<emp.nom;
cout<<endl<<"Edad: "<<emp.edad;
cout<<endl<<"Sueldo: "<<emp.sueldo;
cout<<endl<<"Sexo: "<<emp.sexo;
cout<<endl<<"Mail 1: "<<emp.mat[0];
cout<<endl<<"Mail 2: "<<emp.mat[1]<<endl;
return;
}
El programa consiste en ordenar el vector por edad y nombre alfabeticamente...
si alguien me puede orientar o ayudarme, se los agradezco mucho.
:)
for(int i=1;i<tam-1;i++)
{
for(int j=1;j<tam-i-1;j++)
{
if (vec[j].edad> vec[j+1].edad)
{
temp=vec[j].edad;
vec[j].edad=vec[j+1].edad;
vec[j+1].edad=temp;
}
}
}
Ahí estás ordenando las edades... pero le estás asignando a cada individuo una edad que no es la suya... lo que tienes que ordenar es las estructuras en sí.
Además si estás usando dos bucles ( i y j ), no tiene sentido que a la hora de cambiar el orden uses solo j.
for(int i=1;i<tam-1;i++)
{
for(int j=1;j<tam-i-1;j++)
{
if (vec[i].edad> vec[j].edad)
{
struct empleado temp = vec[i];
vec[i]= vec[j];
vec[j] = temp;
}
}
}
En el caso de ordenar por nombre te pasa exactamente lo mismo.
PD.: intenta no usar variables globales, no suelen ser una buena idea en el 99% de los casos.
PD2.: ya que estás usando c++, lo mismo te resulta más cómodo utilizar la clase string para manejar las cadenas, en vez de char*. Además, te podrías plantear usar la clase vector en vez de un array de c para gestionar la lista de empleados.
PD3.: Hay una tercera forma de ordenar y es usando las funciones qSort y sort... pero eso es algo que dejo que investigues por tu cuenta.
Un saludo.
Cita de: zagato-krono en 5 Octubre 2013, 02:26 AMEl programa consiste en ordenar el vector por edad y nombre alfabeticamente...
En el segundo fragmento que debes completar solo tienes un bucle cuando necesitas dos.
En el primer fragmento hay dos errores, el primero ya lo indico
eferion y el segundo son los indices (incorrectos) utilizados. Utiliza el motor de búsqueda de los foros (o sitios como Wikipedia) para verificar como se debe implementar el algoritmo de ordenacion BubbleSort.
Un saludo
for(int i=1;i<tam-1;i++)
{
for(int j=1;j<tam-i-1;j++)
{
if (vec[i].edad> vec[j].edad)
{
struct empleado temp = vec[i];
vec[i]= vec[j];
vec[j] = temp;
}
}
}
En el caso de ordenar por nombre te pasa exactamente lo mismo.
PD.: intenta no usar variables globales, no suelen ser una buena idea en el 99% de los casos.
PD2.: ya que estás usando c++, lo mismo te resulta más cómodo utilizar la clase string para manejar las cadenas, en vez de char*. Además, te podrías plantear usar la clase vector en vez de un array de c para gestionar la lista de empleados.
PD3.: Hay una tercera forma de ordenar y es usando las funciones qSort y sort... pero eso es algo que dejo que investigues por tu cuenta.
Un saludo.
[/quote]
GRACIAS de veras, perdona x no poder contestar ayer (se me fue la luz), y entre trabajo y tareas de las otras materias .... :S
Si, investigare mas acerca de los metodos, y me basare en las lineas que escribiste.
No entendia bien como hacerlo en el struct.
:D :D :D :D :D :D
Cita de: rir3760 en 5 Octubre 2013, 17:55 PM
En el segundo fragmento que debes completar solo tienes un bucle cuando necesitas dos.
En el primer fragmento hay dos errores, el primero ya lo indico eferion y el segundo son los indices (incorrectos) utilizados. Utiliza el motor de búsqueda de los foros (o sitios como Wikipedia) para verificar como se debe implementar el algoritmo de ordenacion BubbleSort.
Un saludo
Gracias, tomare en cuenta tus sugerencias, paso a terminar el programa :D :D
Igual, perdona por no contestar rapido, como ya explique se me fue la luz y no pude seguir...
y de veras gracias, saludos