Código
#include <cstdlib> #include <iostream> #include <fstream> using namespace std; class Agenda{ char name[30]; int age; public: int contar(); void extraer(Agenda* Persona); void ordenar(Agenda* Persona); void agregaralfi(const char* nombre, int edad); const char* getname(); int getage(); void set(char*,int); }; int main(int argc, char *argv[]) { int op; do{ cout<<"1.Ingresar una persona a la agenda"<<endl; cout<<"2.Ver todas las personas de la agenda"<<endl; cout<<"3.Ordenar agenda"<<endl; cout<<"4. Salir"<<endl; cin>>op; if (op == 1){ char aux[30]; int ageaux; cin.ignore(); cout<<"Ingrese el nombre: "; cin.getline(aux,30); cout<<"Ingrese la edad: "; cin>>ageaux; Agenda persona; persona.agregaralfi((const char*)aux,ageaux); } else if (op == 2){ Agenda *persona; int x=persona->contar(); if (x > 0){ persona= new Agenda [x]; persona->extraer(persona); for (int i=0;i<x;i++) cout<<persona[i].getname()<<persona[i].getage()<<endl; } else if (x==0) cout<<"No hay personas"<<endl; else cout<<"Error al abrir el archivo, compruebe su existencia"<<endl; delete[] persona; } else if (op == 3){ Agenda *persona; int x=persona->contar(); if (x > 0){ persona= new Agenda [x]; persona->extraer(persona); persona->ordenar(persona); for (int i=0;i<x;i++){ cout<<persona[i].getname()<<persona[i].getage()<<endl; persona[i].agregaralfi(persona[i].getname(),persona[i].getage()); } } else if (x==0) cout<<"La agenda no tiene personas"<<endl; else cout<<"Error al abrir el archivo, compruebe su existencia"<<endl; } cout<<"\n\n\n"; }while (op != 4); cin.get(); return EXIT_SUCCESS; } void Agenda::extraer(Agenda* Persona){ ifstream ent("Agenda.txt"); if (!ent){ cout<<"Error al abrir el archivo, compruebe su existencia"<<endl; return; } for (int i=0;i<contar();i++){ ent.getline(Persona[i].name,30,':'); ent>>Persona[i].age; ent.ignore(); } ent.close(); } int Agenda::contar(){ ifstream ent("Agenda.txt"); if (!ent){ return -1; } int c=0; while (ent) if (ent.get() == '\n') c++; ent.close(); return c; } void Agenda::ordenar(Agenda* Persona){ int c=contar(); ofstream sal("Agenda.txt"); sal.close(); for (int i=0;i<c-1;i++) for (int j=i+1;j<c;j++) if (strcmp(Persona[i].getname(), Persona[j].getname()) > 0){ Agenda AUX=Persona[i]; Persona[i]=Persona[j]; Persona[j]=AUX; } } void Agenda::agregaralfi(const char* nombre, int edad){ ofstream sal("Agenda.txt", ios::out | ios::app | ios::ate); if (!sal) exit(1); sal.setf(ios::left); sal.width(29); sal<<nombre<<':'<<edad<<endl; sal.close(); } void Agenda::set(char nombre[], int edad){ strcpy(this->name,nombre); this->age=edad; } const char* Agenda::getname(){ return this->name; } int Agenda::getage(){ int x=this->age; return x; }
Estare ausente un tiempo pero cuando vuelva vere las criticas y/u observaciones... Saludos....
PD: Alguien por ahi lo hizo con sobrecarga de operadores y me dijo que lo queria postear (ayer), le dije que esperara un poco hasta que yo creara el post y aca esta... Do it