Archivo Ordenamiento C++

Archivo Ordenamiento C++ este es un ejemplo para ordenar los datos en un archivo o fichero escrito en c++, ha sido ejecutado en VisualStudio aunque también debe de correr en cualquier compilador standar, si tienes alguna duda no dudes en postearlo, que con gusto te ayudaré.

/*

Choc Cac, Victor Hugo.

La aplicación es ordena por el número de carnet (pero no se puede colocar
un caracter como separador ejemplo 10-1010, si no solo 101010)

*/

#include <fstream>
#include <iostream>
#include <cstdlib>
#include <Windows.h>

using namespace std;

const int maximo = 3;//maximo de estudiantes, solo puse tres.

struct Estudiante{
double carne;
char nombre[100];
};

void CrArchivo();
void SinArchivo();
void OrArchivo();

Estudiante Datos[maximo];

int _tmain(int argc, _TCHAR* argv[])
{
int menu;
do
{
system(«cls»);
cout<<endl<<«===Archivo de Ordenamiento===\n\n»;
cout<<«1. Agregar Alumnos.\n»;
/*
Observación:
Antes de selecionar la opcion 3 podemos ver, la opcion 2 para ver la lista desordenada, ahora bien si
selecciona la opcion 3 y seguidamente la opcion 2 observaremos que la lista ya esta ordenada

Para verificar si la lista fue ordenada, salimos de la aplicación y seleccionamos la opción 3.
*/
cout<<«2. Archivo No ordenado(antes de ordenar) y ordenado(despues guardardo).\n»;
cout<<«3. Archivo ordenar(ordena los datos).\n»;
cout<<«4. Salir.\n»;
cout<<«Que Opcion: «;

cin>>menu;

switch (menu)
{
case 1:
{
CrArchivo();
}
break;
case 2:
{
SinArchivo();
}
break;
case 3:
{
OrArchivo();
}
break;
case 4:
{
menu =-1;
}
break;
default: cout<<«\nFuera de Rango, teclee una opcion validad……\n»;
}
}while(menu !=-1);
return 0;
}

void CrArchivo()
{
int numero = 1;
system(«cls»);
ofstream salida(«ordenacion.bin», ios::out | ios::binary);
if(!salida)
{
cout << «\nNo puede crearse el archivo ordenacion.bin\n»;
system(«pause»);
return exit(1);
}
for(int conta=0; conta < maximo;conta++)
{
cout << «\nIngrese Su Carne: «;
cin>> Datos[conta].carne;
cin.ignore();
cout << «Nombre completo estudiante: «;
cin.getline(Datos[conta].nombre,31);
salida.write((char *) &Datos, sizeof(Datos));
}
salida.close();
}
void SinArchivo()
{
int numero = 1;
system(«cls»);
ifstream abrir(«ordenacion.bin», ios::in | ios::binary);
if(!abrir)
{
cout << «\nNo puede abrirse el archivo ordenacion.bin\n»;
system(«pause»);
return exit(1);
}

for(int conta=0;conta < maximo; conta++)
{
abrir.read((char *) &Datos, sizeof(Datos));
cout << «\nEstrutura No.» << numero;
cout << «\nSu nombre es: » << Datos[conta].nombre;
cout << «\nSu Carne es: » << Datos[conta].carne << «\n\n» << endl;
numero++;
}
abrir.close();
system(«pause»);
}
void OrArchivo()
{
int i, j;
int numero = 1;
Estudiante temp;
system(«cls»);
fstream abrir(«ordenacion.bin», ios::out| ios::binary);
if(!abrir)
{
cout << «\nNo puede abrirse el archivo ordenacion.bin\n»;
system(«pause»);
return exit(1);
}

for (i = 0; i < maximo – 1 ; i++)
{

for (j = i + 1; j < maximo ; j++)
{
if (Datos[i].carne > Datos[j].carne)
{
temp = Datos[i];
Datos[i] = Datos[j];
Datos[j] = temp;
}
}
}

cout << «Espere, Ordenando lista….»;
Sleep(5000);
system(«cls»);
for(int conta=0;conta<maximo;conta++)
{

cout << «\nEstrutura No.» << numero;
cout << «\nSu nombre es: » << Datos[conta].nombre;
cout << «\nSu Carne es: » << Datos[conta].carne << «\n\n»;
numero++;
abrir.write((char*) &Datos, sizeof(Datos));
}
system(«pause»);
system(«cls»);
cout << «Guardando lista, espere….»;
Sleep(5000);
abrir.close();
system(«cls»);
}

Esta entrada ha sido publicada en Diversidad y etiquetada como . Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.