e7d99b54d9
Un ejemplo de uso de clases y memoria dinámica en C++
71 lines
1.8 KiB
C++
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;
|
|
} |