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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [SRC] [C++] (Archivo de TEXTO) MiniAgenda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SRC] [C++] (Archivo de TEXTO) MiniAgenda  (Leído 4,134 veces)
.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
[SRC] [C++] (Archivo de TEXTO) MiniAgenda
« en: 29 Julio 2010, 03:59 am »

Wenas... Aca dejo un code de una MiniAgenda que estuve haciendo, guarda Un nombre y un numero que en este caso es una edad pero el cambio para que guarde un tlf es minimo... Gracias a littlehorse y Leo Gutierrez por sus consejos  :xD:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. class Agenda{
  8.        char name[30];
  9.        int age;
  10.    public:
  11.        int contar();
  12.        void extraer(Agenda* Persona);
  13.        void ordenar(Agenda* Persona);
  14.        void agregaralfi(const char* nombre, int edad);
  15.        const char* getname();
  16.        int getage();
  17.        void set(char*,int);
  18. };
  19.  
  20. int main(int argc, char *argv[])
  21. {
  22.    int op;
  23.    do{
  24.        cout<<"1.Ingresar una persona a la agenda"<<endl;
  25.        cout<<"2.Ver todas las personas de la agenda"<<endl;
  26.        cout<<"3.Ordenar agenda"<<endl;
  27.        cout<<"4. Salir"<<endl;
  28.        cin>>op;
  29.  
  30.        if (op == 1){
  31.            char aux[30];
  32.            int ageaux;
  33.            cin.ignore();
  34.            cout<<"Ingrese el nombre: ";
  35.            cin.getline(aux,30);
  36.            cout<<"Ingrese la edad: ";
  37.            cin>>ageaux;
  38.            Agenda persona;
  39.            persona.agregaralfi((const char*)aux,ageaux);
  40.        }
  41.        else if (op == 2){
  42.            Agenda *persona;
  43.            int x=persona->contar();
  44.            if (x > 0){
  45.                persona= new Agenda [x];
  46.                persona->extraer(persona);
  47.                for (int i=0;i<x;i++)
  48.                    cout<<persona[i].getname()<<persona[i].getage()<<endl;
  49.            }
  50.            else if (x==0)
  51.            cout<<"No hay personas"<<endl;
  52.            else
  53.            cout<<"Error al abrir el archivo, compruebe su existencia"<<endl;
  54.  
  55.            delete[] persona;
  56.        }
  57.        else if (op == 3){
  58.            Agenda *persona;
  59.            int x=persona->contar();
  60.            if (x > 0){
  61.                persona= new Agenda [x];
  62.                persona->extraer(persona);
  63.                persona->ordenar(persona);
  64.                for (int i=0;i<x;i++){
  65.                    cout<<persona[i].getname()<<persona[i].getage()<<endl;
  66.                    persona[i].agregaralfi(persona[i].getname(),persona[i].getage());
  67.                }
  68.            }
  69.            else if (x==0) cout<<"La agenda no tiene personas"<<endl;
  70.            else cout<<"Error al abrir el archivo, compruebe su existencia"<<endl;
  71.        }
  72.        cout<<"\n\n\n";
  73.    }while (op != 4);
  74.  
  75.    cin.get();
  76.    return EXIT_SUCCESS;
  77. }
  78.  
  79. void Agenda::extraer(Agenda* Persona){
  80.    ifstream ent("Agenda.txt");
  81.    if (!ent){
  82.        cout<<"Error al abrir el archivo, compruebe su existencia"<<endl;
  83.        return;
  84.    }
  85.    for (int i=0;i<contar();i++){
  86.        ent.getline(Persona[i].name,30,':');
  87.        ent>>Persona[i].age;
  88.        ent.ignore();
  89.    }
  90.    ent.close();  
  91. }
  92.  
  93. int Agenda::contar(){
  94.    ifstream ent("Agenda.txt");
  95.      if (!ent){
  96.        return -1;
  97.    }
  98.    int c=0;
  99.    while (ent) if (ent.get() == '\n') c++;
  100.    ent.close();
  101.    return c;
  102. }
  103.  
  104. void Agenda::ordenar(Agenda* Persona){
  105.    int c=contar();
  106.    ofstream sal("Agenda.txt");
  107.    sal.close();
  108.    for (int i=0;i<c-1;i++)
  109.        for (int j=i+1;j<c;j++)
  110.        if (strcmp(Persona[i].getname(), Persona[j].getname()) > 0){
  111.            Agenda AUX=Persona[i];
  112.            Persona[i]=Persona[j];
  113.            Persona[j]=AUX;
  114.        }
  115. }
  116.  
  117. void Agenda::agregaralfi(const char* nombre, int edad){
  118.    ofstream sal("Agenda.txt", ios::out | ios::app | ios::ate);
  119.    if (!sal) exit(1);
  120.    sal.setf(ios::left);
  121.    sal.width(29);
  122.    sal<<nombre<<':'<<edad<<endl;
  123.    sal.close();
  124. }
  125.  
  126. void Agenda::set(char nombre[], int edad){
  127.    strcpy(this->name,nombre);
  128.    this->age=edad;    
  129. }
  130.  
  131. const char* Agenda::getname(){
  132.    return this->name;
  133.    }
  134.  
  135. int Agenda::getage(){
  136.    int x=this->age;
  137.    return x;
  138.    }
  139.  

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  :xD


En línea

"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja



leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [SRC] [C++] (Archivo de TEXTO) MiniAgenda
« Respuesta #1 en: 29 Julio 2010, 06:06 am »

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstdlib>
  4. using std::cout;
  5. using std::endl;
  6. using std::cin;
  7. using std::ifstream;
  8. using std::ostream;
  9. using std::istream;
  10. class Agenda
  11. {
  12.    // Interfaz pública:
  13.    public:
  14.    inline unsigned int contarPersonas(void);
  15.    inline std::string getname(void) const
  16.    {
  17.        return name;
  18.    }
  19.    inline unsigned int getage(void) const
  20.    {
  21.        return age;
  22.    }
  23.    void ordenar(void);
  24.    void set(const std::string&, unsigned int&);
  25.    friend ostream& operator<<(ostream&, const Agenda&);
  26.    friend istream& operator>>(istream&, Agenda&);
  27.  
  28.    private:
  29.    std::string name;
  30.    unsigned int age;
  31. };
  32. unsigned int Agenda::contarPersonas(void)
  33. {
  34.    ifstream entrada("Agenda.txt", std::ios::in);
  35.  
  36.    if(!entrada.good())
  37.    exit(EXIT_FAILURE);
  38.  
  39.    unsigned int contador = 0;
  40.    while(!entrada.eof())
  41.    {
  42.        if(entrada.get() == '\n')
  43.        contador++;
  44.    }
  45.    entrada.close();
  46.    return contador;
  47. }
  48. void  Agenda::ordenar(void)
  49. {
  50.    if(contarPersonas() <= 1)                       // No hacer nada.
  51.    return;
  52.    std::string *names = new std::string[ contarPersonas() ];
  53.    ifstream entrada("Agenda.txt", std::ios::out);
  54.  
  55.    if(!entrada.good())
  56.    {
  57.        std::cerr << "Error abriendo archivo.";
  58.        exit(1);
  59.    }
  60.  
  61.    char temporal[100];
  62.    unsigned int i = 0;
  63.    while(!entrada.getline(temporal, 100).eof())
  64.        names[i++] = temporal;
  65.    entrada.close();
  66.  
  67.    unsigned int max = contarPersonas();
  68.  
  69.    std::ofstream salida("Agenda.txt", std::ios::out);
  70.  
  71.    for(i = 0; i < max; i++)
  72.    for(unsigned int j = 0; j < max; j++)
  73.    if(names[i] < names[j])
  74.    {
  75.        std::string aux = names[i];
  76.        names[i] = names[j];
  77.        names[j] = aux;
  78.    }
  79.    // Volcar al archivo :
  80.    for(i = 0; i < max; i++)
  81.    salida << names[i] << endl;
  82.    salida.close();
  83.  
  84.    delete[] names;
  85.  
  86. }
  87. void Agenda::set(const std::string& name, unsigned int& age)
  88. {
  89.    this->name = name;
  90.    this->age = age;
  91. }
  92. ostream& operator<<(ostream& salida, const Agenda& persona)
  93. {
  94.    ifstream entrada("Agenda.txt", std::ios::in);
  95.  
  96.    if(!entrada.good())
  97.    exit(1);
  98.  
  99.    char temporal[100];
  100.    salida << endl;
  101.    while(!entrada.getline(temporal, 100).eof())
  102.    salida << temporal << endl;
  103.    entrada.close();
  104.    return salida;
  105. }
  106. istream& operator>>(istream& entrada, Agenda& persona)
  107. {
  108.    cout << "Ingrese el nombre : ";
  109.    entrada.ignore();
  110.    getline(entrada, persona.name);
  111.    cout << "Ingrese la edad : ";
  112.    entrada >> persona.age;
  113.    //entrada >> persona.age;
  114.    return entrada;
  115. }
  116. int main(void)
  117. {
  118.    unsigned int op;
  119.    do
  120.    {
  121.        cout << endl << "1.Ingresar una persona al archivo" << endl;
  122.        cout << "2.Ver todas las personas del archivo" << endl;
  123.        cout << "3.Ordenar" << endl;
  124.        cout << "4.Salir" << endl;
  125.        cin >> op;
  126.        Agenda persona;
  127.        if(op == 1)
  128.        {
  129.            cin >> persona;
  130.            std::ofstream file;
  131.            file.open("Agenda.txt", std::ios::app);
  132.            file << persona.getname() << ' ' << persona.getage() << endl;
  133.            file.close();
  134.        } else if (op == 2)
  135.        {
  136.            cout << persona;
  137.            cout << "\n\n->" << persona.contarPersonas() << " actualmente.\n";
  138.        } else if(op == 3)
  139.        {
  140.            persona.ordenar();
  141.        }
  142.    } while (op != 4);
  143.    return 0;
  144. }


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ARCHIVO DE TEXTO
Desarrollo Web
Esprinter 0 1,927 Último mensaje 1 Marzo 2011, 18:41 pm
por Esprinter
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines