Cpp/Clases y memoria dinámica/ListaPersonas.cpp

71 lines
1.8 KiB
C++

#include "ListaPersonas.h"
using namespace std;
void iniciar(tListaPersonas& lista) {
lista.capacidad = 2;
lista.contador = 0;
lista.persona = new Persona * [lista.capacidad]; //Crea una lista de punteros (que en un futuro, apuntarán cada uno a "tPersona").
}
void ampliar(tListaPersonas& lista) {
lista.capacidad *= 2;
Persona** aux = new Persona * [lista.capacidad];
for (int i = 0; i < lista.contador; i++) {
aux[i] = lista.persona[i];
}
delete[] lista.persona;
lista.persona = aux;
}
void liberar(tListaPersonas& lista) {
for (int i = 0; i < lista.contador; i++) {
delete lista.persona[i];
}
delete[] lista.persona;
}
void agregar(tListaPersonas& lista) {
string nombre, apellidos, NIF, edad;
do {
if (lista.contador == lista.capacidad) { ampliar(lista); }
cout << "Introduzca nombre de persona: " << endl;
getline(cin, nombre);
cout << "Introduzca apellidos: " << endl;
getline(cin, apellidos);
cout << "Introduzca NIF: " << endl;
getline(cin, NIF);
cout << "Introduzca edad: " << endl;
getline(cin, edad);
lista.persona[lista.contador] = new Persona(nombre, apellidos, NIF, edad);
lista.contador++;
cout << "Pulse 'ESC' para SALIR, 'ENTER' para continuar..." << endl;
} while (!salir());
}
void mostrar(tListaPersonas& lista) {
cout << setw(10) << right << "NOMBRE" << setw(20) << "APELLIDOS" << setw(20) << "NIF" << setw(15) << "EDAD" << endl;
cout << setw(75) << setfill('=') << "\n" << setfill(char(0));
for (int i = 0; i < lista.contador; i++) {
lista.persona[i]->mostrar();
cout << endl;
}
}
bool salir() {
int tecla = 27;
bool ESC = false;
cin.sync();
tecla = _getch();
if (tecla != 0xe0) {
if (tecla == 27) {
ESC = true;
}
}
return ESC;
}