Programa C++
que lea el fichero binario "sueldos2.dat" creado en una entrada anterior y muestre los empleados ordenados
por sueldo, de menor a mayor. 
Utiliza un array dinámico para realizar la ordenación.
Para ordenar el array se utilizará el método de ordenación de la burbuja
Utiliza un array dinámico para realizar la ordenación.
Para ordenar el array se utilizará el método de ordenación de la burbuja
Los datos de cada empleado se han escrito en el fichero utilizando
la siguiente estructura:
struct Templeado
{ 
           char nombre[20];
           char apellidos[20];
           char departamento[20];
           float sueldo; 
}; 
#include
<iostream>
#include
<fstream>
using
namespace std;
struct Templeado
{
    char nombre[20];
    char
apellidos[20];
    char
departamento[20];
    float sueldo;
};
void burbuja(Templeado [], int);
int main()
{
    Templeado
registro, *array;
    int tamanyo =
sizeof(Templeado); // Tamaño de un registro 
    int
i = 0, num_registros;
    ifstream in;
    in.open("sueldos2.dat", ios::binary);
    if(in.fail())
    {
       cout <<
"Error al abrir el fichero sueldos2.dat" << endl;
       system("pause");
       exit(1);
    }
    //cálculo
del número de registros del fichero
   
in.seekg(0,ios::end); //nos posicionamos al
final del fichero
    //número
de registros = bytes / tamaño en bytes de un registro
   
num_registros=in.tellg()/tamanyo; 
    //creamos
el array con el tamaño calculado
    array
= new Templeado[num_registros];
    if(array==NULL)
    {
       cout <<
"Error en la asignación de memoria\n";
      
system("pause");
       exit(1);
    }
    in.seekg(0); //volvemos al pincipio del fichero
    //
Pasamos los registros al array
    in.read((char *)
&array[i], tamanyo);
    while(!in.eof())
    { 
         i++;
         in.read((char *) &array[i],
tamanyo);
    }
   
burbuja(array,num_registros); //ordenar el
array
   
//mostrar todos los empleados ordenados por sueldo
    for(i=0;i<num_registros;i++)
    { 
            cout << "\nEMPLEADO:
" << i+1 << endl;
            cout << "Nombre: "
<< array[i].nombre << endl;
            cout << "Apellidos: " <<
array[i].apellidos << endl;
            cout
<< "Departamento: " << array[i].departamento <<
endl;
            cout << "Sueldo: "
<< array[i].sueldo << endl;
    }
    in.close();
    delete [] array;
    system("pause");
}
//función para ordenar el array de empleados por el método de la burbuja
void
burbuja(Templeado A[], int N) 
{ 
    int i, j;
    Templeado aux;
    for(i=0;i<N-1;i++)       
        for(j=0;j<N-i-1;j++) 
            if(A[j+1].sueldo<A[j].sueldo)  
            {                
              aux=A[j+1];    
              A[j+1]=A[j];   
              A[j]=aux;
            }
}
Hola, muy útil el post.
ResponderEliminarVeo sencillo saber el número de líneas si se usan struct, pero... y si no sabes el tamaño de la lineaque lees en el fichero binario. Hay alguna forma de obtenerlo? Muchas gracias de antemano